progressive类型的jpeg在嵌入系统中的异常处理

转载时请注明出处和作者联系方式:http://blog.csdn.net/mimepp
作者联系方式:YU TAO <yut616 at sohu dot com>

在jpeg中,有一类progressive类型的图片,你可能在网络上已经见过,就是那种先出现一整张比较模糊的图片,然后逐渐变得清晰的。这种图片相对于baseline jpeg有一个好处就是在网络传输中有一些优势,能让用户先见到图片,提供比较好的用户体验UX。
通常的baseline jpeg是那种 top-to-bottom扫描方式来存储的,而Progressive(逐渐)方式是把文件分成多次来扫描,它在第一次scan时,使用非常低的quality设置,这样占用的空间就特别小。然后后面的scan会逐渐增加quality,而且每次scan都会加入到已经有的data中,这样文件的大小和baseline的基本相同。所以总体上来说,progressive的jpeg是把相同的数据组织成一个稍微复杂些的order。

但在progressive的jpeg做decompress时,会占用大量的内存,在嵌入系统中,会导致out-of-memory。
特别是超过720*480时,占用的内存有时会达到16M。
fopen
jpeg_std_error  
setjmp
jpeg_create_decompress
jpeg_stdio_src
jpeg_read_header, 在这后面需要判断progressive类型,并做出异常处理,如返回不支持等。
jpeg_start_decompress,这里会占用大量的内存。
jpeg_read_scanlines...
jpeg_finish_decompress
jpeg_destroy_decompress
fclose

对JCS_CMYK/JCS_YCCK类型的处理,也可以在相同的地方做一个判断。
JCS_CMYK,                /**/ /* C/M/Y/K */
JCS_YCCK                
/**/ /* Y/Cb/Cr/K */
其中CMYK是一般用在印刷领域的, CMYK是代表印刷上用的四种油墨色,全称是 Cyan-Magenta-Yellow-Black,C代表青色、M代表洋红色、Y代表黄色、K代表黑色。在绘画中,理论上只需要前三种就能配出所有的颜色,但是实际上黑色却很难配出来,经常出来的是深灰色或深灰蓝色,所以在印刷中就加入了黑色,这样暗色部分就够黑够纯了。也叫做印刷四原色模式。另外由于每个颜色的浓度变化是0%-100%,所以它能配出的颜色要比RGB少了很多。
树叶本来的颜色不是绿色,是由于树叶吸收了除绿色光以外的其它光线(减色),只反射绿光到人眼睛所产生的色彩效果。所以CMYK也叫减色模式。
另外,CMYK格式的图片有些是有exif缩略图的。
YCCK是 Luminance亮度 , Chroma色度 , Chroma,  Black黑度。它是Adobe定义的一个不太常用的格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值