Уменьшение цветов в изображении PNG увеличивает размер файла - PullRequest
1 голос
/ 17 ноября 2010

Я использую ImageMagick, чтобы программно уменьшить размер изображения в формате PNG, уменьшая цвета в изображении. Я получаю изображения уникальных цветов и делю это на 2. Затем я присваиваю это значение опции -colors следующим образом:

переменная = уникальные цвета / 2

convert image.png -colors variable -depth 8

Я думал, что это существенно уменьшит размер изображения, но вместо этого увеличит размер изображений на диске. Может кто-нибудь пролить свет на это.

Спасибо.

РЕДАКТИРОВАТЬ: Оказывается, проблема была дизеринг. Дизеринг помогает вашим уменьшенным цветным изображениям больше походить на оригиналы, но увеличивает размер изображения. Чтобы удалить дизеринг в ImageMagick, добавьте + дизеринг к вашей команде. Пример

convert CandyBar.png + dither -colors 300 -depth 8 lessCandyBar.png

Ответы [ 3 ]

3 голосов
/ 17 ноября 2010

ImageMagick, вероятно, использует некоторый алгоритм сглаживания, чтобы изображение выглядело так, как будто оно имеет оригинальное количество цветов. Это увеличивает «случайность» данных изображения (отдельные пиксели перекрашиваются в некоторых местах, чтобы смешаться с другими цветами), и эти данные изображения больше не упаковываются. Исследуйте, как команда convert выполняет дизеринг. Вы также можете увидеть этот эффект, добавив второе изображение как слой в gimp / эквивалентную программу и настроив прозрачность.

1 голос
/ 06 марта 2013

Вы должны использовать pngquant для этого.

Вам не нужно угадывать количество цветов, оно имеет фактическую настройку --quality:

pngquant --verbose --quality=70 image.png

Выше будет автоматически выбирать количество цветов, необходимое для соответствия заданному качеству в том жемасштабировать как качество JPEG (100 = идеально, 70 = нормально, 20 = ужасно).

pngquant имеет значительно лучший алгоритм квантования, и чем лучше квантование, тем лучше соотношение качество / размер файла.

И pngquant не сглаживает области, которые хорошо выглядят без сглаживания, и это позволяет избежать добавления ненужного шума / случайности в файл.

0 голосов
/ 17 ноября 2010

"Новое" сжатие PNG не так хорошо, как оригинальное.

...