Как правильно обрабатывать веб-изображения с высоким разрешением для дисплеев с высоким разрешением (в основном для дисплеев на сетчатке iOS)? - PullRequest
8 голосов
/ 12 марта 2012

У меня есть мобильный веб-сайт, использующий преимущества jQuery Mobile, однако изображения, откровенно говоря, выглядят как дерьмо на iPhone 4 / 4S.Я предполагаю, что то же самое пойдет и для «нового iPad», когда он будет доступен позже на этой неделе.

Я знаю, что это как-то связано с соотношением пикселей и / или DPI (или PPI или любым другим способом).назовите это ... давайте не будем обсуждать это).Я просто хочу знать, каков наилучший способ подачи веб-изображений с высоким разрешением для этих дисплеев на сетчатке iOS.

Сначала я подумал, что изменение DPI изображения (в Photoshop) решит проблему.Я взял несколько образцов изображений и масштабировал их до ширины 190 пикселей.Я сохранил одно изображение с разрешением 72 DPI, а другое с разрешением 200 DPI.Это не имело никакого эффекта.Убедитесь сами (на iPhone 4 / 4S): http://haxway.com/restest/1.html Нижнее изображение каждого изображения имеет разрешение 200 DPI.

Затем, вместо сохранения изображения высокого разрешения при 200 DPI, яснова сохранил его с разрешением 72 DPI, но на этот раз я увеличил ширину (до 528 пикселей), чтобы при уменьшении до 190 пикселей он был равен ~ 200 DPI.Похоже, это сработало: http://haxway.com/restest/2.html Если вы просматриваете источник, вы можете видеть, что я заставляю ширину / высоту для тегов изображения (<img src="w4.jpg" alt="" width="190" height="143">).

Однако яне уверен, что это лучшее решение.Разве использование атрибутов width / height для масштабирования изображения не влияет на производительность рендеринга, поскольку устройство должно масштабировать изображение, а не просто загружать его (и не трогать его дальше)?

После некоторого исследования оно выглядитнапример, есть некоторые медиа-запросы CSS, например -webkit-min-device-pixel-ratio [1], где вы можете использовать разные CSS для отображения высокого разрешения и, следовательно, загружать изображения с высоким разрешением в CSS.Но мне нужно настроить таргетинг на теги HTML <img>.В другой статье, которую я прочитал (извините, потерял ссылку), предлагалось использовать Javascript для замены «обычных» изображений на изображения высокого разрешения.Это просто звучит безумно!

Есть ли лучший способ сделать это?Я понимаю, что мнения могут отличаться от того, какой «лучший» путьЕсли бы можно было объяснить плюсы и минусы каждого метода, это было бы здорово!Моя цель - использовать любой метод, который рендерит быстрее (надеюсь, без использования какого-нибудь хакерского Javascript и т. Д.).

Спасибо!

[1] http://aralbalkan.com/3331

Ответы [ 2 ]

1 голос
/ 13 марта 2012

Вам нужно будет запустить некоторую форму js в качестве решения. Тот, который выбирают для использования в данный момент, один на коврик Уилкокс. Он будет отображать правильное изображение на экране. Большим плюсом этого решения является кэширование изображений для снижения нагрузки на пользователей.

http://adaptive -images.com /

Существует стремление ввести новый HTML-элемент рисунка, который может потребовать нескольких источников для решения этой проблемы, но это еще далеко.

http://www.w3.org/community/respimg/

0 голосов
/ 27 апреля 2012

Для тегов изображений, я думаю, вы уже дали свое собственное решение.Большим преимуществом является отправка одного и того же изображения для всех клиентов.

Для изображений CSS вы не можете сделать то же самое?Забудьте о неуклюжем -webkit-min-device-pixel-ratio, который будет требовать другое изображение каждый раз, когда они готовят новое устройство.Просто отправьте самое большое изображение и используйте CSS3 background-size, чтобы уменьшить его.Я не проверял это.IE <9 создаст для вас проблему. </p>

Я, наверное, как и вы, ошеломленный html / css, пока не предлагает подходящего способа сделать это, только такие хакерские обходные пути.Я также, как и вы, смущен тем, что почему браузеры не просто придерживаются информации DPI изображения.Если кто-то знает, комментарии приветствуются.

Есть ли лучший способ сделать это?

Да, избегайте использования растровых изображений.Используйте SVG.

...