Подтвердить что ты не робот

Какие параметры для преобразования (ImageMagick или GraphicsMagick) создают самый маленький (размерный) PNG?

ImageMagick создает несколько довольно больших PNG. GraphicsMagick намного лучше, но я все еще ищу лучшие варианты для использования с конвертированием для получения наименьшего размера файла png.

У меня есть большой png с небольшим размером файла, и, передавая это через IM-конвертер, я не смог достичь этого размера, не говоря уже о том, что уменьшите его. С GM convert я могу получить его немного меньше, но я ищу улучшения, в общем, для любого изображения. Я сталкиваюсь.

gm convert -quality 95 a_png.png gm.png
convert -quality 95 -depth 8 a_png.png im.png
gm identify *

a_png.png PNG 2560x2048+0+0 PseudoClass 256c 8-bit 60.1K 0.000u 0:01
gm.png[1] PNG 2560x2048+0+0 PseudoClass 256c 8-bit 60.0K 0.000u 0:01
im.png[2] PNG 2560x2048+0+0 DirectClass 8-bit 130.2K 0.000u 0:01 

Какие опции для конвертирования производят самый маленький PNG файл?

(Да, я знаком с OptiPNG, PNGOUT и Pngcrush. Но я за чем-то, что будет доступно без всякого вопроса в каждом ящике nix, в котором я оказался.)

4b9b3361

Ответ 1

Похоже, мы с тобой ищем тот же ответ. К сожалению, там, похоже, не так много людей с хорошим знанием GraphicsMagick. Это то, что я узнал до сих пор,

Оператор качества не работает должным образом для любого изображения, отличного от JPEG. Для меня это просто увеличило размер файла при использовании в PNG и GIF.

Я сделал это для своих PNG и GIF файлов, чтобы уменьшить их размер:

gm convert myImage.png +dither -depth 8 -colors 50 myImage.png
  • +dither останавливает любое сглаживание изображения при уменьшении цветов. (это уменьшает размер файла)

  • -depth 8, вероятно, не требуется, поскольку большинство файлов PNG уже имеют глубину 8.

  • -colors 50 уменьшает количество цветов в изображении до 50, это единственный способ уменьшить размер изображения, сохраненного в формате без потерь, например PNG или GIF.

Очевидно, что для лучшего соотношения качества и качества изображения вы можете просто уменьшить глубину изображения или количество цветов, не зная текущей глубины и количества цветов. Чтобы определить эту информацию, я делаю следующее

gm identify -format "file_size:%b,unique_colors:%k,bit_depth:%q" myImage.png

Для моего изображения; это возвращает

file_size:100.7k,unique_colors:13455,bit_depth:8

Проблема заключается в том, что GraphicsMagick уменьшает цвета, которые он всегда уменьшает до 255, поэтому вы не можете установить количество цветов до 300, например. Также, похоже, проблема с альфа-каналом для файлов PNG; Если изображение имеет прозрачность, уменьшение цветов заменяет эти цвета прозрачным; с imagemagick он этого не делает.

Ответ 2

Я только что наткнулся на этот вопрос, поэтому обновляю, у GraphicsMagick и ImageMagick есть серьезная проблема. Они не могут записывать PNG-изображения, используя фрагмент tRNS, что означает, что если вы попытаетесь прочитать изображение с фрагментом tRNS и затем записать его, изображение будет намного больше. GM не лучший инструмент для сжатия изображений. Вам нужно использовать отдельный инструмент, такой как OptiPNG, чтобы сжать PNG снова после использования Image/GraphicsMagick. Я получаю до 60% меньших файлов при использовании OptiPNG после запуска GraphicsMagick на изображении.

Также мне было интересно, если у вас возникла проблема с изображениями RGBA и глубиной бит. Для некоторых изображений я получаю исключение "Недопустимая глубина бит". Я не вижу причин, почему.

Ответ 3

Я не нашел способ сделать это в командной строке, но я нашел этот бесплатный сайт (http://tinypng.org/), который делает отличную работу, мое тестовое изображение получило 71% -ное сокращение, окончательный размер составил всего 29% от оригинала. Похоже, вы можете дать ему 20 изображений за раз. Я изучаю, как они это делают.

http://tinypng.org/