синий вопросительный знак (должен быть изображением GIF), отображаемый в мобильном сафари в ios simulator ver 4.3.2 - PullRequest
2 голосов
/ 22 февраля 2012

Изображение GIF, хранящееся локально на сервере ( 86,8 КБ , 1430x2246 ), не отображается на мобильном веб-сайте на моем устройстве iPhone 3G с ОС iOS 4.2.1. Сайт построен с использованием jQuery Mobile и HTML5.

Вот устройства и платформы, которые я тестировал, и результат загрузки изображения:

  • Все основные настольные браузеры (то есть Win / IE, Mac / Win Safari, Mac / Win Chrome, Win / Opera, Mac / Win FireFox). ПРИНЯТ
  • iPhone 3G, работает под управлением iOS 4.2.1, Mobile Safari. FAILED
  • Opera Mini на указанном устройстве iPhone 3G. ПРИНЯТ
  • iPhone 4S коллеги, работающий под управлением Mobile Safari. ПРИНЯТ
  • Симулятор iOS, с аппаратным обеспечением -> Версия 5.0, Mobile Safari. ПРИНЯТ
  • Симулятор iOS, с Hardware-> Версия 4.3.2, Mobile Safari. FAILED
  • Android-устройство, версия 2.3.3. ПРИНЯТ
  • Android SDK Emulator, версии 1.5, 2.2, 2.3.3. ПРИНЯТ

Я решил сосредоточить свое внимание на iOS Simulator, версия 4.3.2, поскольку изображение даже не загружалось на мощный настольный компьютер.

Я подумал, что это может быть проблема с памятью в iOS 4.3.2 и Mobile Safari, возможно, связанная с ограничением ресурсов для изображений ( Руководство по разработке iOS ). Я понимаю, что есть обходной путь для пределов изображения (то есть 6,5 МБ), но это также не сработало для меня (задокументировано позже).

Следующим, что я посмотрел, был размер и размер изображения. Я загрузил несколько бесплатных изображений (сохраненных в виде GIF-файлов) из Интернета и сохранил их локально на сервере. Все они, за исключением одного или большего размера и размера, чем рассматриваемое изображение, все они успешно загружены в iOS Simulator, версия 4.3.2. ,

К вашему сведению, размеры и размеры изображения были:

  • 238 КБ, 2428x1531
  • 414 КБ, 2993x2050
  • 238 КБ, 2000x1490
  • 196 КБ, 2192x2541
  • 196 КБ, 850x638

Возвращаясь к обходному решению изображения, если я правильно понимаю, основная идея - заключить img в тег canvas (я правильно назвал функцию drawImage в JavaScript), что я и сделал. К сожалению, GIF до сих пор не загрузился. Я также попытался загрузить изображение как фоновое изображение в тег div, и, опять же, это не сработало.

Я не могу придумать, что еще можно попробовать. Возможно ли, что GIF поврежден? Честно говоря, я понятия не имею, что еще я могу сделать.

Позвольте мне добавить все вышеперечисленные методы, которые я попробовал, но не удалось, все загруженные мной изображения работали правильно (опять же, в контексте iOS Simulator, версия 4.3.2). И я даже посмотрел на простые ошибки, такие как орфографические ошибки, а источник и имя файла GIF, о котором идет речь, написаны правильно. Я даже попытался изменить расширение изображения с GIF на JPG, а затем PNG, и изображение все еще не загружалось.

Буду признателен за любую помощь. Спасибо.

Обновление

Я попытался проверить достоверность изображения, используя ссылку здесь Как программно проверить, не повреждено ли изображение (PNG, JPEG или GIF)? и изображение не было повреждено. Если я найду решение, я обязательно документирую его.

Спасибо.

Update2

Я получил копию iranView и сохранил GIF в формате JPG (а не просто переименовал его, как я делал в прошлый раз) и изображение, загруженное в iOS Simulator версии 4.3.2, Mobile Safari. Используя тот же метод, я попытался сохранить GIF как PNG, потому что JPG слишком велик, но он не загружался Затем я попытался сохранить GIF как JPG и сохранил JPG как GIF, но он также не загружался. Работал только JPG.

Update3

Оказывается, что те изображения, которые я тестировал, действительно являются JPEG; Итак, мне пришлось перепроверить. Я загрузил изображения из изображений Google, убедившись, что они в формате GIF и имеют размер более 2 Мп. Вот что я нашел:

Image Results

Перечитав раздел «Известные ограничения ресурсов iOS» с сайта Apple Developer, он говорит:

Максимальный размер декодированных изображений GIF, PNG и TIFF составляет 3 мегапикселя для устройств с менее чем256 МБ ОЗУ и 5 мегапикселей для устройств с объемом памяти, превышающим или равным 256 МБ.То есть ширина * высота ≤ 3 *1024* 1024 для устройств с объемом оперативной памяти менее 256 МБ.Обратите внимание, что декодированный размер намного больше, чем кодированный размер изображения.

Максимальный размер декодированного изображения для JPEG составляет 32 мегапикселя с использованием подвыборки.Изображения JPEG могут иметь размер до 32 мегапикселей из-за подвыборки, которая позволяет изображениям JPEG декодироваться до размера, который имеет шестнадцатое число пикселей.Изображения JPEG размером более 2 мегапикселей субдискретизируются, то есть декодируются до уменьшенного размера.Сэмплирование JPEG позволяет пользователю просматривать изображения с последних цифровых камер.

Максимальный размер элемента холста составляет 3 мегапикселя для устройств с объемом оперативной памяти менее 256 МБ и 5 мегапикселей для устройств с объемом памяти, превышающим 256 МБ.БАРАН.Высота и ширина объекта Canvas составляет 150 x 300 пикселей, если он не указан.

Если все вышеперечисленное выполнено с использованием железа, то почему изображения "earth_lights.gif" и "logoJDC_orange_GIF.gif" отображаются наiPhone 3G (4.2.1) еще не отображается на iOS Simulator (4.3.2)?Я проверил все изображения с IrfanView, чтобы убедиться, что их форматы правильные - GIF-файлы - это действительно GIF-файлы, а JPG-файлы - это действительно JPG-файлы.Исходя из всего этого тестирования, я склоняюсь к выводу, что декодирование GIF в Mobile Safari, по крайней мере на устаревшей прошивке iOS, является непоследовательным, в отличие от вывода, что изображение GIF, которое я первоначально пытался отобразить, повреждено.

...