原创 STM32开发板上BMP图片的显示之四

2010-4-8 19:53 4677 10 11 分类: MCU/ 嵌入式

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

 


四、BMP图片显示功能扩展


能够对图片进行缩小显示,比如前面那个480x384的图片,能够缩小比例显示在液晶屏上。


3、图片的缩小


1)分析


这里主要是实现整数倍的缩小,比如缩小为原来的 1/2 1/3等等。当显示图像的时候,跳过一些像素。比如缩小3倍,则每3个像素里取一个显示。


2)实现的思路


假象显示窗口后面有一个缩小了3倍(宽和高同时缩小)的位图文件。通过显示窗口与该位图文件的关系,得到要显示的位图文件的行列值。比如要显示第Y行,第X个像素,实际在文件数据区是 取得第3Y行、第3X列的颜色数据,显示在液晶上。


 


3)程序代码设计


      Bmp_ShowWidth = PicInfo.BmpWidth/size;


      Bmp_ShowHeight = PicInfo.BmpHeight/size;


以上两行代码取得缩小后位图文件的显示宽度和高度。


PixelOffset = PicInfo.DataOffset + size* ( Bmp_ShowHeight-1 - BmpRow )\


*PicInfo.BytePerRow+ ( PicInfo.BitPerPixel * BmpCol*size )/8;


以上代码的含义是当显示BmpCol行、BmpCol列的时候,实际是取得3 BmpCol行、3 BmpCol列处的颜色数据。


 


由于代码较长,这里就不例举了。


以下是缩小的显示效果。


 a413004f-07a8-4db5-9650-3ce2409b0dff.jpg  7ae0e1b8-4aa6-4f89-b108-2a6d237df690.jpg


 

4ccaf8b3-2886-4e8a-a998-fe417bafd621.jpg c20c81a1-b7b2-4ddb-a590-7f3a45599ae5.jpg


 

 

4、单色、16色、256色图片的显示。


这三类图形都具有彩色表。像素数据实质是在彩色表里的索引,每个颜色占据四个字节。以256色图片为例:


res = f_read (&BmpFile, (void *)UserBuf, 1, &ByteRead); //这句话是读出像素数据,8


ColorTableOffset = PicInfo.ColorOffset + UserBuf[0]*4; //这个语句是根据像素索引定位相应颜色在颜色表中的位置


res = f_lseek ( &BmpFile, ColorTableOffset );//文件定位到相应颜色项


res = f_read (&BmpFile, (void *)UserBuf, 3, &ByteRead); //取出索引对应的颜色,可以在液晶上画出该像素


经测试,256色图片的读取速度比24位真彩色要慢的多,显示一副图片需要一分多钟,因为取得一个像素需要读两次文件。


 


 


 

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1459499 2010-7-7 22:59

res = f_open(&fsrc, "1.BMP", FA_OPEN_EXISTING | FA_READ); //打上图片文件名 res = f_read(&fsrc, &bmp, sizeof(bmp), &br); if((bmp.pic_head[0]=='B')&&(bmp.pic_head[1]=='M')) 为什么我的程序执行到这就执行的错误?郁闷了 谢谢
相关推荐阅读
nthq2004 2010-05-08 20:04
USB自定义设备驱动02
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  本来还想编写应用程序测试一下自定...
nthq2004 2010-05-07 21:35
USB自定义设备驱动01
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  一、USB设备驱动入门1、学习目...
nthq2004 2010-05-04 21:01
智林开发板上实现自定义的USB HID设备
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  一、自定义HID设备的相关概念1...
nthq2004 2010-05-01 21:58
U盘例程在智林开发板上的移植
 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 一、移植前的准备工作1、有哪些操...
nthq2004 2010-04-30 19:19
U盘实现流程跟踪分析02
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />   二、追踪USB大容量设备的实现...
nthq2004 2010-04-27 21:51
U盘实现流程跟踪分析01
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />   一、追踪USB大容量设备的实现...
我要评论
1
10
关闭 站长推荐上一条 /3 下一条