基于自美系统的电子相册功能开发教程
> 本示例提供的简单版的电子相册功能,利用网络接口实时下载缓存壁纸图片到指定目录,开发者可根据本教程自行扩展导入自己的真实照片做成真正的电子相册
### 教程如下:
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
- 关于自美智能系统
- 系统安装
- 方式一:镜像安装
- 方式二:源码安装
- 系统使用
- 配置设备上网
- 微信控制自美智能系统
- 系统内置功能的触发词
- 系统升级
- 手动在线升级
- 硬件设备
- 自美系统驱动板使用说明
- 自美智能系统魔镜配件附图
- LED灯控制
- 风扇接口
- 人体感应模块
- 开发者入口
- 如何启用开发者模式
- 基类(MsgProcess)介绍
- 插件开发
- 基础知识
- config.json配置文件
- 前端开发
- 移动端(微信小程序)开发
- 通讯协议(MQTT)
- 用户管理
- 插件控制按钮定义
- 无线网络设备(万能开关)
- 视频演示
- 功能使用演示视频集
- 功能开发教程视频集
- 树莓派相关知识
- 安装树莓派官方操作系统
- 无键盘、显示器配网和SSH
- 启用树莓派SSH和root用户登录
- 启用树莓派VNC远程桌面
- 自定义树莓派屏幕分辨率
- 扩展阅读技术文章
- 电子相册功能
- 调用系统opencv人脸识别标准库
- 语音触发式系统插件demo示例
- 插件触发机制
- 实现交互
- 实现视觉处理
- 霍尔磁力模块
- 无源蜂鸣器
- 火焰检测模块
- ky-028数字温度模块
- 光遮断器模块
- DS18B20温度模块
- 2021常见问题和人工帮助
- 更新日志