Python实现二次元图片随机展示与动态屏保
本文介绍如何使用Python结合Pygame库实现二次元随机图片展示功能。通过调用外部API获取图片,利用Pygame创建窗口并循环显示图片,支持静态随机切换与动态定时更换两种模式。文章提供了完整的代码示例、依赖安装说明及图片批量下载工具,适用于制作个性化桌面屏保或学习网络请求与图形界面编程。
Python实现二次元图片随机展示与动态屏保
接下来将演示具体的实现内容。
接口配置与依赖准备
程序使用的接口地址为https://www.dmoe.cc/random.php,该地址由相关开发者提供。调用时需携带参数:return=json。详细的使用文档可参考:https://www.dmoe.cc/random.php。
卷 Data 的文件夹 PATH 列表 卷序列号为 90AF-CB35 D:. │ 图片展示.py │ └─temp
运行程序前,还需准备一个名为temp的文件夹用于存储临时文件。
请提前安装requests、pygame模块以支持网络请求和图形界面操作。
基础屏保程序实现
首先提供一个备用版本的程序代码:
from requests import get
from json import dumps
from random import randint
import pygame
from pygame.locals import *
url = 'https://www.dmoe.cc/random.php'
params = {'return':'json'}
response = get(url,params).json()
width,height,img = int(response['width']),int(response['height']),response['imgurl']
content = get(img)
number = randint(100000,999999)
with open('temp/%d.jpg' % number,'wb') as f:
f.write(content.content)
pygame.init()
canvas = pygame.display.set_mode((width,height))
canvas.fill((255,255,255))
pygame.display.set_caption('Show')
def handle():
for event in pygame.event.get():
if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE):
pygame.quit()
exit()
background = pygame.image.load('temp/%d.jpg' % number)
while True:
canvas.blit(background,(0,0))
handle()
pygame.display.update()此处省略了备用程序的详细展示,其效果为简单的屏保模式,关闭程序请按ESC键。
正式程序与小歪API调用
接下来展示正式运行的程序代码:
小歪API接口地址为https://api.ixiaowai.cn/api/api.php,直接发送get类型的请求即可获取数据,用户可以使用Postman或APIfox等工具进行调试。

from requests import get
from json import dumps
from random import randint
import pygame
from pygame.locals import *
content = get('https://api.ixiaowai.cn/api/api.php')
number = randint(100000,999999)
with open('temp/%d.jpg' % number,'wb') as f:
f.write(content.content)
pygame.init()
canvas = pygame.display.set_mode((1920,1080))
canvas.fill((255,255,255))
pygame.display.set_caption('Show')
def handle():
for event in pygame.event.get():
if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE):
pygame.quit()
exit()
background = pygame.image.load('temp/%d.jpg' % number)
while True:
canvas.blit(background,(0,0))
handle()
pygame.display.update()更新说明:
动态换图功能更新
如果需要实现图片自动变化的效果,请参考以下代码:
from requests import get
from json import dumps
from random import randint
import pygame
from pygame.locals import *
#创建pygame窗口
pygame.init()
canvas = pygame.display.set_mode((1920,1080))
canvas.fill((255,255,255))
pygame.display.set_caption('Show')
#事件处理
def handle():
for event in pygame.event.get():
if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE):
pygame.quit()
exit()
while True:
#下载图片
content = get('https://api.ixiaowai.cn/api/api.php')
number = randint(100000,999999)
with open('temp/%d.jpg' % number,'wb') as f:
f.write(content.content)
#装填图片
background = pygame.image.load('temp/%d.jpg' % number)
canvas.blit(background,(0,0))
#设置窗口
handle()
pygame.display.update()
pygame.time.delay(5000) #秒数是多少,就写几千秒,这是五秒一换图片批量下载工具
此外,这里提供了一个图片批量下载器的实现:
from requests import get # get请求方法
from json import dumps # json序列处理
from random import randint # 随机数
from os.path import exists # 检测文件夹是否存在
from os import mkdir # 创建文件夹
# 下载的爬虫
def download(path):
url = "https://api.ixiaowai.cn/api/api.php" # 请求URL
content = get(url) # 发送网络请求
number = randint(100000, 999999) # 生成随机数
print("保存图片 >>> ./%s/%d.jpg" % (path, number)) # 输出保存信息
with open("%s/%d.jpg" % (path, number), "wb") as f: # 保存图片信息
f.write(content.content)
# 主函数
def main(path):
# 下载
for i in range(1, int(input("您需要多少张图片 >>> ")) + 1):
download(path)
# 保留解释器窗口
input("下载完成。")
# 保存路径的程序
if __name__ == "__main__":
try: # 包含异常
folder = input("您需要将图片保存到哪里(输入相对路径) >>> ")
if exists(folder): # 有这个文件夹就直接保存
main(folder) # 下载
else: # 如果没有这个文件夹
mkdir(folder) # 创建文件夹
main(folder) # 下载
except Exception as e: # 提取异常基类
print("ERROR:%s" % e) # 输出异常
至此,关于Python实现二次元图片展示(屏保)的介绍结束。如需了解更多相关Python实现二次元图片展示的内容,请搜索本站历史文章或继续浏览后续相关文章,希望大家日后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









