很多人都发现android的浏览器显示大分辨图片会出现显示模糊的问题,我测试是超过100万像素(1024x1024)的图片就会出现模糊。在android的讨论网站上也有对这个问题的一个issue(http://code.google.com/p/android/issues/detail?id=6021 )。 很明显这是android的浏览器实现代码在加载图片的时候做了限制。相关代码在 external/webkit/WebCore/platform/graphics/android /ImageSourceAndroid.cpp,这个文件中有一个局部函数computeMaxBitmapSizeForCache(),看一下这个 函数前面的注释:
Images larger than this should be subsampled. Using ashmem, the decoded
pixels will be purged as needed, so this value can be pretty large. Making
it too small hurts image quality (e.g. abc.com background). 2Meg works for
the sites I've tested, but if we hit important sites that need more, we
should try increasing it and see if it has negative impact on performance
(i.e. we end up thrashing because we need to keep decoding images that have
been purged.
Perhaps this value should be some fraction of the available RAM...
已经说得很明白了,可以修改这个函数里面的常数(2*1024*1024),不过修改这个值以后记得改一下上面的一个宏定义MIN_RLE_ALLOC_SIZE为同样的值,否则在加载大图片时会很慢。