基于自美系统的电子相册功能开发教程 > 本示例提供的简单版的电子相册功能,利用网络接口实时下载缓存壁纸图片到指定目录,开发者可根据本教程自行扩展导入自己的真实照片做成真正的电子相册 ### 教程如下: 1. 在前端显示页面里底部`$(function(){...});`代码中增加如下代码: ``` setInterval(() => { var imgurl = pythonapi.run('photoalbum'); $("body").css('background-image','url("./img/backimg/'+ imgurl.toString() +'")'); }, 10000); ``` 前端显示页面位于:`/keyicx/app/resources/app/html/mojing/index.html`,如图所示: ![](http://qiniucn.16302.com/62711abd7380627e03b538c6122e4085) 这段代码的含义是:每隔10秒钟切换一次背景,如你需要改这个切换时间,可以修改上面代码中的`10000`,这个是以毫秒为单位。 2. 在python目录下的api.py文件中增加如下代码: 导入以下库 ``` import time import os import multiprocessing as mp ``` 添加下载图片函数 ``` def requestImg(url, name, num_retries=3): img_src = url header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) \ AppleWebKit/537.36 (KHTML, like Gecko) \ Chrome/35.0.1916.114 Safari/537.36', 'Cookie': 'AspxAutoDetectCookieSupport=1' } req = urllib.request.Request(url=img_src, headers=header) try: response = urllib.request.urlopen(req) filename = name + '.jpg' with open(filename, "wb") as f: content = response.read() f.write(content) response.close() except HTTPError as e: print(e.reason) except URLError as e: print(e.reason) except IncompleteRead or RemoteDisconnected as e: if num_retries == 0: return else: requestImg(url, name, num_retries-1) ``` 底部增加一个电子相册与前端通讯的接口 ``` # 电子相册 if op=='photoalbum': this_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) save_dir = os.path.join( this_dir, 'app/resources/app/html/mojing/img/backimg') file = str(int(time.time())) save_file = os.path.join( save_dir, file ) dir_or_files = os.listdir(save_dir) img_list = [] for dir_file in dir_or_files: img_list.append( dir_file[:-4] ) img_list.sort() # print( img_list ) p = mp.Process( target = requestImg, args = ('https://api.ooopn.com/image/beauty/api.php',save_file ) ) p.start() if len(img_list)>5: ret_img = img_list[len(img_list)-4] reve_list = img_list reve_list.sort(reverse=True) for i in range(5, len(reve_list)): os.remove(os.path.join(save_dir, reve_list[i]+'.jpg')) else: ret_img = img_list[0] print(ret_img+'.jpg',end="") ``` 全部代码增加完毕。 ------ ### **特别提醒一下:** 网络图片会被缓存到:/app/html/mojing/img/backimg 目录,需要事先创建好这个目录,具体操作步骤如下: ``` cd /keyicx/app/resources/app/html/mojing/img mkdir backimg sudo chmod 777 -R backimg ``` 如果你的代码不是通过sudo运行的,可能会存在权限问题,所以给这个目录777权限。 教程所改的文件已经上传到百度网盘,开发者可下载参考: 链接: https://pan.baidu.com/s/1rJFvEOqMMllZdiRR9_wvNw 提取码: wr12