
image2lcd转换图片值数组.doc
9页wordimage2lcd转换图片值数组STM32上的TFT彩屏要显示图片,常见的是把图片转换为数组,然后进展处理,使用的软件是image2lcd,图标和界面如下:由于彩屏是320*240的分辨率,这里我们先找一副320*240分辨率的图片对图片进展取模了先将要取模的图片打开,配置好宽度和高度,这里配置为240*320将“高位在前〞取消,设置为“16位真彩色〞,保存为“C语言数组〞,参数的配置如上图所示:这里有一点值得注意的是:转换之后将获得了一个长度为153608的数组gImage_12[153608],如果不是这个就要进展修改,否如此最终是不能正常显示的,至于153608是怎么来的,如下: 因为分辨率是240*320,并且每个像素点是16位真彩色〔2字节〕,因此图片数据的数据长度就应该是240*320*2==152600,数据帧头还有8字节,所以总共为153608字节,假设获取的不是153608字节的数据,请检查图片的分辨率,和取模软件的参数配置最后将获得的文件,保存为TXT文本文档image2lcd图片头文件信息:图片头数据的第2~5个字节表示宽和高,假设图片数组BMP_BUF[],高位在前时bmp_withd=(BMP_BUF[2]<<8)|BMP_BUF[3]bmp_lenth=(BMP_BUF[4]<<8)|BMP_BUF[5]第一个字节是扫描方式,低四位为0水平扫描,为1垂直扫描第二字节输出灰度0x04--16灰 0x18--24真彩色,0x10--16真彩色 0x20--32真彩色针对STM32F103的TFT来说,分辨率都是320*240,对应的函数处理是ili9320_DrawPicture(x0,y0,x1,y1,(u16*)(picture+BmpHeadSize));#define BmpHeadSize (8) 这里要明确x0,x1,y0,y1void ili9320_DrawPicture(u16 StartX,u16 StartY,u16 EndX,u16 EndY,u16 *pic){u32 i, total; ili9320_SetWindows(StartX,StartY,EndX,EndY); ili9320_SetCursor(StartX,StartY); LCD_WriteRAM_Prepare(); total = EndX*EndY; for (i=0;i












