Нужна помощь понять ImageMagick / Graphicsmagick-цвет
-
26-09-2019 - |
Вопрос
Я пытаюсь программно уменьшить (сбыток) размер файла PNG и GIF файлов. Как часть этого мне нужно уменьшить количество цветов на изображениях. Я не хочу уменьшать все изображения одному цвету, так что я делаю; Получите количество уникальных цветов на изображении, затем; Разделите это число на 2, чтобы уменьшить количество цветов вдвое.
Проблема в том, что это не работает. Использование ImageMagic это слишком медленно и не уменьшает размер файла, если изображение не имеет в нескольких сотнях уникальных цветов. Использование GraphicsMagick всегда приводит к уникальному значению цветов до 255 независимо от того, сколько цветов было в исходном изображении. Другая проблема с GraphicsMagick - это если есть какие-либо прозрачные пиксели на изображении, он заменяет потерянные цвета прозрачным.
Любая помощь будет благодарно благодарно, спасибо.
Решение 3
Первая проблема, GraphicsMagick может быть скомпилирован с использованием 8 бит, 16 бит или 32 битных квантовых уровней. Моя версия скомпилирована на 8 бит (по умолчанию), это означает, что максимальное количество цветов, которые можно назначить изображению, составляет 256 уникальных цветов (3 * 3 * 2, 1 синих битов удаляется, потому что человеческий глаз может не вижу это правильно). Очевидно, что GraphicMagick может обрабатывать изображения с большим количеством цветов, чем это, но при уменьшении цветов он может уменьшить только до 256 или менее цветов. Более крупные квантовые квантования приводят к графическому сигналу, чтобы работать медленнее и требует большего количества памяти. Например, использование шестнадцати битных пикселейных квантов приводит к тому, что графический сигнал работает на 15% до 50% медленнее (и принимать в два раза больше памяти), чем когда он создан для поддержки восьмибитных пиксельных квантов.
Вторая проблема; Обработка прозрачности в изображениях PNG, я использовал более раннюю версию графического управления (1.1, я думаю), во всяком случае, когда я обновил до 1.3 Эта проблема больше не присутствует, что говорит мне, что это был ошибка в графике MAGICK 1.1, что вызвало это.
Другие советы
Уменьшение количества цветов полезно только, если
- Затем изображение может использовать палитру вместо того, чтобы сохранить цвет для каждого пикселя
- Размер индекса палитры меньше, чем размер цвета
- Формат изображения поддерживает размер палитры
Я думаю, что вы можете получить только 1-битный, 4-битный 8-битный, такой 2-цветной, 16 цветной или 256-кратный в этих форматах. Я думаю, что если вы попросите больше, вы просто обрезали до 256. Если вы спросите меньше, он просто не использует всю палитру.
Вы считаете преобразованием в JPEG и играете с настройкой качества? Вы в конечном итоге с более мелким контролем зерна потерь-Ness. Недостаток - это если изображения не фотографии, но звучит так, будто у них много цветов, поэтому они могут быть.
Возможно, выберите 1, 4, 8 бит, если он близок к тому, что вы хотите, и JPEG, если у него много цветов.
Я думаю, что объект ImageMagick, который вы после чего могут быть квантование: