任务目标:
在SSD1306显示一张16x16像素的图标,如下图:
图片明显大于16x16,需要将图片缩放到16x16并显示在LCD屏幕上。
目标屏幕参数如下:
width:128pix
height:32pix
需要两个工具:
1.Image2LCD
2.PctoLCD
PctoLCD可以编辑一张位图的每个像素点,如果手绘能力够强,可以自己用PctoLCD画像素画来制作位图。也可以打开一张现有的位图,编辑它的每个像素点,让最后的显示效果更接近自己的要求。
Image2LCD可以直接把一张图转换成适合LCD显示的图片或者C语言数组。
因为Image2LCD可以直接将图片缩放并转成C语言数组,所以一开始就用它直接转成数组放进程序来显示,结果发现显示出来的图片出现很多脏点。同时还伴随一些像素点的缺失。如下图所示:
所以需要用image2LCD将图片存为BMP图片文件。再用PctoLCD编辑这张BMP图片。为什么不用Photoshop直接保存成BMP图片?因为用ps缩放保存后的位图是这样的。。。
已经完全看不出来图片原有的样子了。
继续说正确的方法。
用Image2LCD打开图片后修改参数,参数值参考红圈内的数据。最后保存成一张位图文件。
再用PctoLCD打开上一步保存的位图文件。如图:
这时看到的像素点仍有位置不对的。需要手动调整一下。
鼠标左键点一下对应像素点可以增加一个显示点。
右键点击可以去除一个像素点。
根据原图对这个图片手动做些调整如下:
然后生成字模:
生成字模参数如下:
确定之后会下下方显示字节数组:
将这些数值复制下来,粘贴到自己的程序里。刷机运行即可得到显示效果。
生成的数组里最后的这截不能要!
程序中和显示位图相关的代码:
u8g2.drawXBMP(2, 2, 16, 16, gImage_123);
gImage_123是生成的图片数组名。
最后放上最终显示效果:
附上两个软件的下载地址:
pctolcd:
链接:https://pan.baidu.com/s/13toXSYkKidi86hpd8ttQ1A
提取码:1234
image2lcd:
链接:https://pan.baidu.com/s/15g40kGk7YG3hOJ0kSDTyIQ
提取码:1234