最近在做类似美图秀秀的apps,有改图和拼接图的功能.最后做好的bitmap通过compress压缩质量或者保存成文件.
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, stream);
然而发现同一样的代码,同一样的图片,也是保存成一样的分辨率,生成的文件大小是不一样的,图片的效果也不一样.分别在Nexus 4 (4.4.2),Nexus 7(4.4.2),三星的T210(4.1.2)和模拟器(2.3.3)上面执行过. 系统越低,生成图片的文件大小就越大,而且放在电脑上看的效果也越差. 撇除了厂商自己可能修改过底层外,原生的方法应该是一直都有在做优化,所以才会系统版本越高,效果越好.
但是这样同时也存在了一个问题.如果我们的apps,可以在2.3甚至2.2的系统上运行的话,就要加上个对系统版本的判定了.因为在低版本上,他们有可能生成出来的图片,会比预想中的大.看的效果就可以忽略了,因为一般低版本的系统,也是存在于旧机器上,他们的屏幕也不算大,分辨率也不算高,看出来应该没什么区别的. 如果是在低版本上,要对分辨率和压缩的比例最好再调低一点点,来弥补他可能比预想中大的问题.因为图片大了,在低配置的机器上,也有可能导致OOM的出现.