Я создаю приложение Javascript для мобильных браузеров (не упакованное как собственное приложение).
Я заметил, что Android (протестированный эмулятор 2.3 и устройство Galaxy S) снижает качество загружаемых изображений, если размеры изображения превышают определенный порог (ширина выше 1400 пикселей или около того). Это делает невозможным загрузку больших растровых изображений (2000 x 2000 px) без потери качества.
Я проверял это
Загрузка одного большого изображения и рисование на нем - я получил пиксельный мусор. Если я рисую линии сетки, используя lineTo (), они имеют идеальное качество, поэтому плохое должно быть в пикселях данных изображения
Нарезка большого изображения на 100 x 100 фрагментов и рисование их на холсте - это единственный метод, который, как я обнаружил, не приводит к снижению качества. Тем не менее, нарезка является громоздкой, добавляет дополнительный шаг для предварительной обработки изображений и время загрузки страницы страдает
Я протестировал tring для загрузки изображения с новым объектом Image (), тегом и фоном CSS: все страдает от сниженного качества, поэтому я подозреваю, что проблема заключается в самом загрузчике изображений
Я также все перепробовал с CSS-рендерингом https://developer.mozilla.org/En/CSS/Image-rendering - не повезло
Похоже, тег Viewport не влияет на загрузку изображения - данные уже являются мусором, когда вы пытаетесь прикоснуться к загруженным данным пикселей. Я перепробовал все возможные значения, предложенные в документации Android SDK http://developer.android.com/reference/android/webkit/WebView.html
Протестировано также для мобильных устройств Firefox, настольных браузеров, iOS: там все хорошо.
Итак, что происходит - Android WebView просто не может загружать большие изображения?
(смайлик подвешенного робота Android здесь)