Вплотную занявшись изучением графических «потрохов» 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 «умный, он поймет». По личному опыту скажу, что разницы в отображении с правильным и «неправильным» порядком цветов я не заметил.

Альтернативные инструменты

Ах да, чуть не забыл. В интернете есть несколько полезных инструментов, которые грех не указать в этой статье:


Читайте также: