У меня есть приложение, которое отображает кучу изображений в слайд-шоу. Эти изображения будут частью пакета и распространяться вместе с приложением.
Все изображения являются фотографиями или фотографическими и т. Д.
Я читал, что в качестве формата изображения предпочтительнее использовать PNG, но, поскольку версия JPG будет намного меньше, я бы предпочел использовать это.
Есть ли какие-либо рекомендации, какой формат использовать и в каком случае?
Ответы:
PNG идеальны по пикселям (без потерь) и требуют очень мало дополнительной энергии процессора для отображения. Однако большие PNG могут занимать больше времени для чтения из хранилища, чем более сжатые форматы изображений, и, следовательно, медленнее отображаются.
JPG меньше для хранения, но с потерями (количество зависит от уровня сжатия), а для их отображения требуется гораздо более сложный алгоритм декодирования. Но типичного сжатия и качества изображения для фотографий обычно вполне достаточно.
Используйте JPG для фотографий и для чего-либо большого, а PNG для чего-либо небольшого и / или предназначенного для отображения «до пикселя» (например, маленькие значки) или как часть составного прозрачного наложения и т. Д.
источник
Apple оптимизирует изображения PNG, которые входят в комплект вашего iPhone. Фактически, iPhone использует специальную кодировку, в которой байты цвета оптимизированы для оборудования. XCode обрабатывает эту специальную кодировку за вас, когда вы создаете свой проект. Таким образом, вы видите дополнительные преимущества использования PNG на iPhone, не считая их размера. По этой причине настоятельно рекомендуется использовать PNG для любых изображений, которые появляются как часть интерфейса (в виде таблицы, меток и т. Д.).
Что касается отображения полноэкранного изображения, такого как фотография, вы все равно можете воспользоваться преимуществами PNG, поскольку они не с потерями, а визуальное качество должно быть лучше, чем JPG, не говоря уже об использовании ресурсов при декодировании изображения. Возможно, вам придется снизить качество ваших JPG, чтобы увидеть реальное преимущество в размере файла, но тогда вы показываете неоптимальные изображения.
Размер файла, безусловно, является важным фактором, но при выборе формата изображения необходимо учитывать и другие факторы.
источник
Есть одна важная вещь, о которой нужно подумать с PNG. Если в вашу сборку Xcode включен PNG, он будет оптимизирован для iOS. Это называется сжатием PNG. Если ваш PNG загружен во время выполнения, он не будет разрушен. Раздавленные PNG работают примерно так же, как 100% JPG. JPG низкого качества работает лучше, чем JPG более высокого качества. Таким образом, с точки зрения производительности от самого быстрого к самому медленному, это будет JPG низкого качества, JPG высокого качества, PNG Crushed, PNG.
Если вам нужно загрузить PNG, вам следует подумать о том, чтобы удалить PNG на сервере перед загрузкой.
http://www.cocoanetics.com/2011/10/avoiding-image-decompression-sickness/
источник
В Cocoanetics блоге опубликовал хороший тест производительности IOS на JPGs на различных уровнях качества и PNG файлов, и без дробления.
Из его заключения:
источник
Просто подумал, что поделюсь немного данными о производительности декомпрессии ...
Я делаю прототип 360-градусного средства просмотра - карусели, где пользователь может прокручивать серию фотографий, сделанных под разными углами, чтобы создать впечатление, что он может плавно вращать объект.
Я загрузил данные изображения в массив NSData, чтобы исключить ввод-вывод файлов из уравнения, но создать NSImage на лету. Тестирование с почти максимальной частотой кадров (~ 25 кадров в секунду) и просмотр в инструментах, я вижу, что приложение явно связано с ЦП, и загрузка ЦП увеличивается примерно на 10%, показывая ~ 275 кб в формате png по сравнению с ~ 75 кб в формате jpg.
Я не могу сказать точно, но я предполагаю, что ограничение ЦП обусловлено общим выполнением программы и перемещением всех данных в памяти, но эта распаковка изображения выполняется на графическом процессоре. В любом случае аргумент производительности JPG и PNG выглядит в пользу JPG, особенно когда принимаются во внимание меньшие размеры файлов (и, следовательно, меньшие размеры объектов в памяти, по крайней мере, в некоторых частях цепочки).
Конечно, все ситуации индивидуальны, ничто не заменит тестирование ...
источник
Я обнаружил огромные различия в производительности анимации при использовании jpeg и png. Например, размещение трех изображений jpeg размером с экран рядом в UIScrollView и горизонтальная прокрутка на iPhone4 приводит к задержке и совершенно неприятной рывке. В непрозрачных png-файлах того же размера прокрутка выполняется плавно. Я никогда не использую jpeg, даже если изображение большое.
источник
Я думаю, что если вы хотите использовать прозрачный, у вас нет другого выбора, кроме PNG. Но, если ваш фон уже непрозрачен, вы можете использовать JPG. Это единственная разница, которую я вижу
источник
«Используйте JPEG для фотографий», как указано в Руководстве по интерфейсу пользователя в разделе Создание иллюстраций в соответствующем формате.
источник