Mik*_*maa 6 html5 android canvas image webview
我正在为移动浏览器构建Javascript应用程序(不包装为原生应用程序).
我注意到,如果图像尺寸超过特定阈值(宽度超过1400像素左右),Android(经过测试的2.3模拟器和Galaxy S设备)会降低加载图像的质量.这使得无法加载大位图图像(2000 x 2000 px)而质量无法使用.
我测试了这个
加载一个大图像并将其绘制在 - 我得到像素垃圾了.如果我使用lineTo()绘制网格线,它们具有完美的质量,那么坏的必须在图像像素数据中
将大图像切成100 x 100个切片并将它们绘制到画布上 - 这是我发现的唯一方法,不会降低质量.但是,切片很麻烦,为预处理图像和页面加载时间增加了额外的步骤
我测试了使用新的Image()对象,标签和CSS背景加载图像:所有东西都受到质量下降的影响,所以我怀疑问题是图像加载器本身
我也用CSS图像渲染尝试了一切https://developer.mozilla.org/En/CSS/Image-rendering - 没有运气
视口标记似乎对图像加载没有影响 - 当您尝试触摸加载的像素数据时,数据已经是垃圾.我尝试了Android SDK文档中建议的所有可能值http://developer.android.com/reference/android/webkit/WebView.html
还测试了Firefox移动,桌面浏览器,iOS:一切都很好.
那么,发生了什么 - Android WebView根本无法加载大图像?
(这里挂着Android机器人的笑脸)
Mik*_*maa 10
如果超过某个内存使用阈值,Android将无条件地重新采样图像并降低质量.
https://android.googlesource.com/platform/external/webkit/+/android-3.2.4_r1/WebCore/platform/graphics/android/ImageSourceAndroid.cpp
无法完整访问原始图像数据.
我向Android开发者谷歌集团发布了一个有关此问题的问题,并且可能会要求提供某种标志来选择退出此行为.
同时,如果您正在考虑开发HTML5网络应用程序并且您可能使用大图像,您只需要在服务器端通过切片对其进行预处理,将较小的图像发送到设备,然后使用或在内部放置许多标签重新构建原始图像容器元素.
另一种选择是通过编写PNG解码器"手动"加载图像,该解码器直接加载图像,绕过ImageSourceAndroid类.
| 归档时间: |
|
| 查看次数: |
3771 次 |
| 最近记录: |