Похоже, вы и я ищем один и тот же ответ.К сожалению, не так много людей с хорошим знанием 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 этого не происходит.