


- Internet Explorer 4.0 падает при открытии определённых PNG
- Internet Explorer 5.0 и 5.01 не отображают PNG через тег object
- версия 5.01 иногда неверно отображает изображения с чёрным (или тёмно-серым) задним фоном в Windows 98
- больше всего проблем по поддержке PNG у версии 6.0: проблемы с открытием файлов размером 4097 и 4098, файлов с пустыми секциями IDAT были исправлены в SP1, проблемы с отображением полупрозрачности исправлены в этой версии не были (впрочем, они решаются при помощи специальных при?мов, но это сказывается на производительности)
- Internet Explorer 7.0 и 8.0 не поддерживают альфа-канал вместе с фильтром полупрозрачности
- ни одна версия этого браузера не поддерживает полностью гамма-коррекцию и коррекцию цвета
- реализация коррекции цвета PNG появилась только в FireFox 3, где она была отключена в настройках вплоть до версии 3.5
- WebKit (на котором основаны Safari и Google Chrome) имел в различных версиях проблемы с отображением полупрозрачности в PNG
- в Opera поддержка полупрозрачности появилась только в версии 6.0, а проблемы с гамма-коррекцией сохранялись до версии 6.1, в современных же версиях есть всего один недостаток, который вряд ли может считаться фатальным: чересстрочные PNG, использующие полупрозрачность, показываются только после полной загрузки
Проблемы отображения PNG в браузерах. Оптимизируем PNG (Portable Network Graphics). Алгоритмы уменьшения изображений
Выбор типа PNG
Автоматическая оптимизация
Оптимизация через Lossy GIF
Постеризация
Простое снижение количество цветов в Photoshop
Программа «Color quantizer» и маска повышения качества
Маска влияния в Adobe Photoshop
Уменьшаем детализацию
Невидимое не значит несуществующее
Разделение непрозрачных и прозрачных областей
Резюме
К сожалению, использование формата тормозит один из распространённых браузеров - Internet Explorer. Все версии этого браузера, начиная с четв?ртой (где впервые появилась поддержка), имеют проблемы в отображении PNG:
Впрочем, у остальных браузеров тоже не всё гладко, хотя список их пригрешений не столь впечатляет:
Как было сказано выше, Internet Explorer до седьмой версии не поддерживал полупрозрачность в изображениях PNG. Этот недостаток исправляется одним из двух методов: использования фильтра AlphaLoader, который позволяет загружать альфа-канал отдельно или подключение изображения через VML, где проблемы нет.
Оба метода обладают недостатками. Использование филтров вообще и AlphaLoader в частности, приводит к повышенному расходу памяти и ухудшению времени отклика браузера. Для иллюстрации проблемы можно привести исследование, Стояна Стефанова (http://ap-project.org/Russian/Article/View/83/Russian_translation/), где использовалось сто иллюстраций с фильтром и без него. Использование фильтров увеличило время отрисовки страницы в 27 (!) раз, а размер использованной памяти - 78 (!) раз.
Использование VML несёт с собой другие проблемы: изображения, загруженные через VML, иногда не кэшируются, требуют специальной разметки и их сложно применять как фоновое изображение, кроме того, скорость инициализации оставляет желать лучшего.
Так что для старых версий Internet Explorer рекомендуется пользоваться, где возможно, PNG с индексированными цветами и бинарной прозрачностью вместо полупрозрачности, прибегая к VML и AlphaLoader только в крайних случаях. Кстати, в последнем случае будет полезно посмотреть на библиотеку DD_belatedPNG (http://dillerdesign.com/experiment/DD_belatedPNG/).
Один недостаток отображения файлов PNG в браузерах связан не с ошибками, а с добрыми намерениями авторов формата. Дело в том, что одни и те же цвета выглядят в различных операционных системах по-разному.
Разработчикам PNG это показалось неправильным. Они ввели в формат несколько полей, куда записываются характеристики машины и операционной системы, на которой создано изображение. В дальнейшем, если параметры оборудования или ОС на машине, где изображение показывается, отличается, производится специальная коррекция.
Идея благая, но в вебе, помимо PNG, используются и другие форматы, в которых такая коррекция не используется. Это приводит к тому, что стык PNG с JPEG может отличаться по цвету в Mac OS, если оба изображения готовились под Windows.
Можно не использовать PNG вообще и не задумываться о таких проблемах, альтернатива - удалить из файла всю цветокорректирующую информацию. Утилита optipng делает это по умолчанию, но можно для той же цели использовать устаревшую во всех отношениях утилиту pngcrush:
pngcrush -rem cHRM -rem gAMA -rem iCCP -rem sRGB infile.png outfile.png
К счастью, новые версии Adobe Photoshop (начиная с CS4) не записывают в файл эту информацию, GIMP же не заполняет поле gAMA, без которого браузеры коррекцию не производят.