Пакетная оптимизация PNG для отображения iphone / ipad, как это делает xcode - PullRequest
5 голосов
/ 03 января 2011

Я работаю над средством просмотра журналов для iPad и борюсь с производительностью.

Я понял, что самая дорогая часть отображения png - это процесс загрузки. Я знаю, что xcode способен оптимизировать png во время сборки, и такие образы загружаются намного быстрее. Но я не могу включить все изображения в сборку, так как она будет огромной.

Знаете ли вы, как оптимизировать произвольный png, не включая его в процесс сборки?

Знаете ли вы, какой формат лучше всего подходит для iphone? Я думаю, что pngs должен использовать цветовую схему RGB-8888, но я не уверен, что еще важно.

Может быть, вы знаете точные параметры для imagemagick?

Ответы [ 7 ]

7 голосов
/ 03 января 2011

Мне кажется, я нашел хорошую статью об оптимизации png для iphone: http://iphonedevelopment.blogspot.com/2008/10/iphone-optimized-pngs.html

Это показывает, что xcode использует эту команду: /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/iphoneos-optimize

Похоже, что приведенная выше команда использует модифицированную версию pngcrush для оптимизации png и преобразования цветовых каналов: /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/pngcrush -iphone -f 0 orig.png optimized.png

И оптимизация действительно полезна. У меня загрузка изображений в 5 раз быстрее!

5 голосов
/ 03 января 2011

Наилучшие из известных мне результатов достигаются с ImageOptim , который я использую для PNG, которые не развертываются через XCode. Он использует pngcrush и некоторые другие инструменты оптимизации PNG для достижения наилучшего сжатия. Насколько я знаю, он не использует альфа-предварительное умножение и замену байтов. ImageOptim также имеет приятный графический интерфейс с поддержкой перетаскивания и может разбивать несколько файлов одновременно.

2 голосов
/ 31 марта 2012

Я экспериментировал с pngnq, pngquant, pngcrush, optipng и т. Д.

Для моего набора PNG я достиг минимального размера файла с помощью pngquant, pngnq и pngcrush

Dir.glob("**/*.png").each do |file|
  ['pngnq -e .png -f', 'pngquant -f -speed 1 -ext .png', 'pngcrush'].each do |command|
    puts "#{command} #{file}"
    `#{command} #{file}`
  end
end

Подробнее на: http://l4u.github.com/blog/2012/04/02/optimizing-file-sizes-of-png-images/

2 голосов
/ 22 ноября 2011

В мой тест размер файла оказался важнее, чем предварительная обработка Xcode (файлы Xcode были больше и медленнее для загрузки).

Лучший способ уменьшить размер файла PNG - преобразовать его в формат PNG8 + alpha - вы можете сделать это в пакете с помощью pngquant (или настроить вручную с помощью GUI ).

Однако, если в вашем случае преобразование из RGBA в предварительно умноженное BGRA занимает больше всего времени, тогда ветвь AdvanceCOMP с добавленными проприетарными расширениями XCode позволит вам пакетно конвертировать PNG в собственный формат iOS.

2 голосов
/ 03 января 2011

Мы использовали Pngcrush для сжатия огромного количества PNG. Вы можете попробовать это тоже. А также, если вам не нужна прозрачность, тогда вместо PNG вы можете попробовать и JPG. Но вы можете пройти ряд проб и ошибок, сравнивая размер и качество компромисса много раз.

1 голос
/ 19 сентября 2011

У меня много-много места с использованием pngnq , но я не проводил никаких тестов, чтобы увидеть, замедляет ли декодирование изображения его вообще.

0 голосов
/ 28 февраля 2011

Попробуйте http://texturepacker.com

Он может не только оптимизировать PNG, но и уменьшить цвета, например. RGBA4444 или RGB565, что значительно уменьшает размер пинга и улучшает рендеринг на устройствах.

Вы также можете экспортировать файлы PVR для устройств, которые его поддерживают (например, iOS, некоторые Android)

А также поддерживает уменьшение изображений для устройств с низким разрешением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...