一直想让图片和文字同时显示在OLED上,研究了10来天,本来想从根本上解决这个问题,但看驱动很久也不得要领,不得不退而求其次,使用整屏图片显示。最后的结果如下:
实际图片显示比较清楚,至少没这么糊。一开始使用jpg图片,效果很差,后来改用png格式,效果原来一样,还不错。
实现原理:
整个背景其实就是一张黑背景带一张图片(128*128)。然后把所有的文字数据写到这张图片上。再整屏显示这个带文字的图片。每分钟更新一次。显示基本没有延时,整体显示还是比较完美的。
相关代码如下:
def data():
#打开图片
imageFile = "321.png"
background=Image.open(imageFile)
#在图片上添加文字
draw = ImageDraw.Draw(background)
draw.text((0,0), a, font = font18, fill = "yellow")
draw.text((0,21),b, font = font13, fill = "RED")
draw.text((0,33),time.strftime('%H:%M') , font = font, fill = "BLUE")
draw.text((47,70), c, font = font13, fill = "WHITE")
draw.text((47,85), d, font = font13, fill = "BROWN")
draw.text((47,100), e, font = font13, fill = "PURPLE")
draw.text((47,115), f, font = font13, fill = "PINK")
draw = ImageDraw.Draw(background)
#保存图片
background.save("background1.png")
PS:原代码中中华万年历的API天气更新“经常”失败导致天气文件下载失败,程序不提示退出,屏幕也不显示。现在还不知道是什么原因。后期可能要加个判断,不可能让屏幕不显示。