Вплотную занявшись изучением графических «потрохов» iOS, я заметил, что используемые там PNG-файлы в Mac OS X и Windows обычным графическим просмотрщиком открыть не получается. Более того, даже маститые и навороченные дизайнерские комбайны, вроде Photoshop или Pixelmator, молча разводили руками, расписываясь в собственном бессилии. Небольшое расследование, проведенное при помощи Google, не только подтвердило распространенность проблемы, но и подсказало пути её решения для разных ОС.
Почему так происходит
Причина такого удивительного поведения операционных систем и графических пакетов кроется в подходе Apple к формированию изображений. В компании решили использовать свою (а значит — нестандартную) реализацию формата PNG, включающую дополнительные данные перед заголовком файла и сжатые данные без традиционных заголовков и корректного окончания.
Кроме этого, красный и синий каналы у таких изображений стоят не на своем месте — вместо RGBA сохраняется BGRA — и сейчас я объясню почему. Помните, один чешский сайт фотографировал и сравнивал под микроскопом экраны iPhone и iPod touch, сравнивая их с Google Nexus One и IPS -дисплеями в iPad/iMac? На том рисунке очень хорошо виден измененный узор пикселей — BGR (синий, зеленый и красный).
Но при открытии такого файла в Preview, утилита для просмотра изображений в лучшем случае отобразит серый знак вопроса:
Больше технической информации можно почерпнуть в этой статье, размещенной в Wiki сайта ModMyi.
Но не все так плохо — пользователи могут просматривать или редактировать эти файлы.
Решение для Mac OS X
Оно заключается в консольной утилите fixpng. После распаковки архива, требуется запустить Терминал и выполнить команду:
fixpng исходный_файл.png результат.png
Минус данного способа заключается в том, то для каждого файла приходится запускать одну и ту же команду. «Пакетно» обрабатывать файл можно при помощи так называемого «дроплета», использующего эту же утилиту. Взять его можно на сайте ModMyi, кроме этого, там детально описан процесс установки и использования дроплета.
Решение для Windows
Для Windows я нашел не менее элегантное решение, которое заключается в использовании программы iPhoneFixPng — обертки для работы с портированными версиями утилит fixpng
и flipchannels
.
Достаточно поместить желаемые изображения в папку png
, нажать кнопку «Convert», подождать окончания процесса и забрать результат из папки fixed
:
Любители командной строки могут воспользоваться этими утилитами напрямую:
Теперь измененные графически файлы можно не только просмотреть, но и изменить по своему усмотрению. Единственное, что я не нашел — нужно ли перед загрузкой в iPhone возвращать файл к исходному виду и как это делать.
Конечно, их можно загрузить в том виде, в котором вы и сохранили его из графического редактора — iPhone «умный, он поймет». По личному опыту скажу, что разницы в отображении с правильным и «неправильным» порядком цветов я не заметил.
Альтернативные инструменты
Ах да, чуть не забыл. В интернете есть несколько полезных инструментов, которые грех не указать в этой статье:
- Скрипт нормализатора на Python.
- Онлайн декодер.
- Плагин для QuickLook, позволяющий просматривать такие PNG-файлы.
Последние комментарии