六一节,赋诗一首
作者:互联网
上周四开始感冒发烧,到今天还在咳嗽,所以也就完美错过带女儿过六一节。想想还是不甘心,翻箱倒柜一番又找出了之前做的墨水屏盒子,赋诗一首看看能不能骗过幼儿园小朋友。
盒子里面是个树莓派Zero WH。
老规矩,一步步分解任务:
1、做个python脚本用来显示内容。简单起见有三个参数,标题、第一行、第二行;
2、从windows自带的字体库中复制相应的字体文件给树莓派供墨水屏显示时使用;
3、可以访问树莓派上的一个网页,自行定义要展示的内容。具体实现本质上就是还需要一个php调用第一步中的python。
第一步里,点亮墨水屏可以参考 https://blog.csdn.net/ki1381/article/details/89929279?spm=1001.2014.3001.5501。官方也提供了示例,想要显示自己的文字参照着改写代码就行。
python脚本接收参数也不难,用好sys.argv[]即可。sys.argv[0]是脚本本身,自定的参数从1开始编号。
第二步里,直接复制windows\fonts目录下相关ttc或ttf(比如msyh就是微软雅黑)文件到树莓派的某个目录(比如创建/usr/share/fonts/msfonts目录),然后cd到该目录,运行下mkfontscale命令即可。
第三步里有坑。我遇到了php调用python不支持中文参数的问题。网上找了几种解决方案,最终采用了php里urlencode中文,python脚本里urllib.parse.unquote的办法。
以下为测试代码:
1、HTML:
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>test</title>
</head>
<body>
<form action="show.php" method="post">
标题:<input type="text" style="width:300px" name="txt1"/>
<br/>
行一:<input type="text" style="width:300px" name="txt2" />
<br />
行二:<input type="text" style="width:300px" name="txt3" />
<br />
<hr/>
<input type="submit" value="upload"/> <input type="reset" value="reset" />
</form>
</body>
</html>
2、PHP:
<?php
$t = $_POST['txt1'];
$l1 = $_POST['txt2'];
$l2 = $_POST['txt3'];
$t = urlencode($t);
$l1 = urlencode($l1);
$l2 = urlencode($l2);
$cmd = "sudo python3 /home/pi/src/ePaper/python3/show.py $t $l1 $l2";
#echo $cmd;
exec($cmd);
?>
3、PYTHON:
#!/usr/bin/python3
# -*- coding:utf-8 -*-
import epd2in9
import time
import sys
from PIL import Image,ImageDraw,ImageFont
import traceback
import urllib.parse
epd = epd2in9.EPD()
epd.init(epd.lut_full_update)
lineTitle = '';
lineC1 = '';
lineC2 = '';
if len(sys.argv) == 4:
lineTitle = urllib.parse.unquote(sys.argv[1])
lineC1 = urllib.parse.unquote(sys.argv[2])
lineC2 = urllib.parse.unquote(sys.argv[3])
try:
epd.Clear(0xFF)
Himage = Image.new('1', (epd2in9.EPD_HEIGHT, epd2in9.EPD_WIDTH), 255) # 255: clear the frame
draw = ImageDraw.Draw(Himage)
fontTitle = ImageFont.truetype('/usr/share/fonts/msfonts/msyh.ttc', 18)
fontMain = ImageFont.truetype('/usr/share/fonts/truetype/wqy/wqy-microhei.ttc', 25)
fontMain7 = ImageFont.truetype('/usr/share/fonts/msfonts/STSONG.TTF',18)
draw.text((0, 0), lineTitle, font = fontTitle, fill = 0)
draw.line((0, 30, 295, 26), fill = 0)
draw.text((0, 36), lineC1, font = fontMain7, fill = 0)
draw.text((0, 80), lineC2, font = fontMain7, fill = 0)
epd.display(epd.getbuffer(Himage))
Himage = None
draw = None
except:
print('traceback.format_exc():\n%s',traceback.format_exc())
exit()
标签:一节,draw,python,argv,sys,一首,import,赋诗,epd 来源: https://blog.csdn.net/ki1381/article/details/117484851