墨水屏显示颜色过程中的问题,数据和像素值提取比较

软件使用步骤参考

数据数量问题

对于一个单层图片来说,可以分辨率可以使用像素的数量来描述。图片的长宽由多少像素组成就是所说的图片的长宽。这种说法也不太准确,一般人为分辨率越大,约清晰。这种认知是在同样长度中有更多像素,也就是看起来更加清晰,没有颗粒感。
那么知道屏幕的长宽的像素,又是怎么知道需要多大的数组能控制整个屏幕像素的显示呢。这要根据屏幕驱动的方式来说,这里是以一个以8266驱动板的程序中的2.13inch_e-Paper_(B)_V3_Specification为例
这个驱动中有下面一句话,很简单的条件选择,表示图片的宽度像素值是否被8整除,不能整除就在除以8得到的值还加1.
下图是寄存器手册中,水平和垂直像素个数,发现表示像素水平的前5个bit位,剩下的3位在二进制中刚好表示8.所以整个图片的表示方式是以横向以字节为单位的方式一行一行的扫描,每个字节表示8个像素值,例如152296的图片需要的单层图像的数据量是:152296/8=5624个以字节为单位的数据数组
在这里插入图片描述

 Width = (EPD_2IN13BC_WIDTH % 8 == 0)? (EPD_2IN13BC_WIDTH / 8 ): (EPD_2IN13BC_WIDTH / 8 + 1);

在这里插入图片描述

方向问题

下面看取图片数据软件的设置:竖直扫描、从右到左、颜色反转。
在这里插入图片描述
在这里插入图片描述

颜色问题

在上面提取图片数据时设置了颜色的反转,这大概是图片对像素值的设置问题,下图中个人将提取的数据转换为像素的形式,这是设置颜色反转后,黑色是0白色是1。很多时候显示不正常没达到预期一般都是对图像进行处理,很少去修改程序。下面对提取后的数据显示代码

void pint_binary(unsigned char num) //8bit数据二进制方式显示
	{ 
		char k;
		for (k=7;k>=0;k--)
		{
			if ((num&(1<<k))==(1<<k))  //判断每一位是不是1
				printf("%c",'1');
			else
				printf("%c",'0');	
		}
	}
int main(void)
 {
 	unsigned int i,j;
 	for (i=0;i<296;i++)
 	{
 		for(j=0;j<19;j++)   //一行扫描152个像素使用了19个字节
 		{
 			pint_binary(gImage_2in13c_b[i*19+j])	;//图片像素数组
 		}
 		printf("\n");
 	}
 	printf("\n");

 	return 0;

 }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值