Сначала это будет зависеть от того, какое изображение вы пытаетесь сжать. Две основные категории:
Для изображений (например, фотографий) наилучшим будет формат с потерями , такой как JPEG , поскольку он удалит детали, которые трудно заметить визуальным восприятием человека. Это позволит очень высокие степени сжатия для качества. Недостатком является то, что чрезмерное сжатие приведет к очень заметным артефактам сжатия .
Для иллюстраций , которые содержат большие области одного цвета, будет использоваться формат сжатия без потерь , такой как PNG или GIF . лучший подход. Хотя это технически неверно, вы можете подумать, что PNG и GIF очень хорошо сжимают повторения одного и того же цвета, подобно кодированию длин серий (RLE).
Теперь, когда вы конкретно упомянули PNG, я углублюсь в это обсуждение из моего опыта использования PNG.
Во-первых, дальнейшее сжатие PNG не является приемлемым вариантом, поскольку невозможно сжать данные, которые уже были сжаты . Это верно для любого сжатия данных; удаление энтропии из исходных данных (в основном повторяющиеся шаблоны, которые могут быть представлены более компактными способами) приводит к уменьшению объема пространства, необходимого для хранения информации. PNG уже использует методы для эффективного сжатия изображений без потерь.
Тем не менее, есть как минимум один возможный способ уменьшить размер PNG: на уменьшить количество цветов, хранящихся в изображении . Используя «индексированные цвета» (по сути, встраивая пользовательскую палитру в само изображение), вы можете уменьшить размер файла. Однако, если у изображения много цветов для начала (например, с цветовыми градиентами или фотографическим изображением), вы, возможно, не сможете уменьшить количество цветов, используемых в изображении, без заметной потери качества.
По сути, все сводится к методу проб и ошибок, чтобы увидеть, не приведут ли изменения к изображению к каким-либо изменениям качества изображения и размера файла.
Комментарий Пола Фишера напомнил мне, что я, вероятно, также не рекомендую использовать GIF. Пол отмечает, что PNG сжимает статические штриховые рисунки лучше, чем GIF, почти в любой ситуации.
Я бы также отметил, что GIF поддерживает только 8-битные изображения, поэтому, если изображение имеет более 256 цветов, вам придется уменьшить используемые цвета.
Кроме того, комментарий Кента Фредрика об уменьшении глубины цвета в некоторых случаях приводил к увеличению размера файла. Хотя это предположение, возможно, что сглаживание приводит к тому, что изображение становится менее сжимаемым (поскольку при сглаживании появляются пиксели с другим цветом для имитации определенного другого цвета, что-то вроде смешивания пигмента краски другого цвета с в конечном итоге с другим цветом), добавляя энтропии к изображению.