OLED如何显示图像、播放视频
使用二进制数据来显示点阵
在只有“黑”,“白”两种状态的屏幕中,一个像素占用一个bit,而一个字节具有8个bit (1Byte=8bit)。为了实现对图像数据利用的最大化,我们一般会使用二进制点的形式对图像进行绘制。
如下图,在这幅图中我们有一个16x16的图片矩阵,它组成了一个“土”字。我们从右下角开始网上扫描点,每8个点对应一个Byte。这样原本需要
16x16=256字节的图像,就可以使用32字节标识出来了。体积减小了8倍。

显示图片的代码实现
我写了一个二进制点阵生成程序,它的下载地址为:
这个程序支持图片,文字和视频转换为点阵。它生成的文件为一个二进制文件,里面的字节数为:
其中前2个字节中,第一字节代表每一列所含的字节数(例如16x16点阵中,这个数值就是2),而第二个字节代表每行所含字节数(例如16x16点阵中,这个数值就是16)。
从上面的介绍可以看出,图片的高度必须为8的倍数
显示图面的完整代码为:
def blit(self,x,y,res='code',dir='fonts',invert=False):
if not dir in os.listdir(): return
if not res in os.listdir(dir):return
with open(dir+'/'+res,'rb') as f:
height=ord(f.read(1))
width=ord(f.read(1))
for w in range(width):
for h in range(height):
code=ord(f.read(1))
for i in range(8):
if code&(1<<i): self.pixel(x+w,y+i+h*8,not invert)
else: self.pixel(x+w,y+i+h*8,invert)作者:admin 创建时间:2024-05-24 11:32
最后编辑:admin 更新时间:2024-07-17 11:01
最后编辑:admin 更新时间:2024-07-17 11:01