好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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()

Okay,这里就不展示了,就是一个简单的屏保效果,关闭请ESC键。

再放出真实程序:

小歪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实现二次元图片展示内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

查看更多关于python实现二次元图片展示(屏保)的详细内容...

  阅读:46次