一、简单介绍
苹果的官方文档有一个代码演示了一种支持在有限的内存环境中显示超大图像的方法,方法是将磁盘上的大图像转换为内存中较小的图像。这在原始图像太大而无法按照要显示的要求放入内存的情况下很有用。支持的格式是:PNG,TIFF,JPEG。不支持的格式:GIF,BMP,隔行扫描图像。——[官方文档]
下面主要是想记录下这个代码中的一个宏的修改其值的区别,讲道理,之前一直搞也没搞明白,不过我现在大致将其理解成是一个提高图片压缩的精度的值。
define destSeemOverlap 2.0f
二、具体分析
这个宏分别在三个代码中被用到了
sourceSeemOverlap = (int)( ( destSeemOverlap / destResolution.height ) * sourceResolution.height );
destTile.size.height += destSeemOverlap;
destTile.origin.y = ( destResolution.height ) - ( ( y + 1 ) * sourceTileHeightMinusOverlap * imageScale + destSeemOverlap );
其实这里面主要影响的就是
- 对源图像和目标图像进行分块处理的高度
- 源块和目标块的y的取值
先看下原始的图片,原始图像大小是7033 × 10110
而我们如果定义的宏destSeemOverlap默认为2的话,那么就会缩小到1555 × 2236,图片缩小了很多,而且精度也是比较高的。
当设置为10的时候,如下图所示,其实也是几乎没有差别的。
但是如果是100的时候,有些地方就会变得差别大了。上面的图为100的,下面是原图,也就是精度其实是缩小了,可以理解成,毕竟本来分的比较细,如果变成100,那么分的少了。