Как сохранить 8-битные PNG с помощью ChunkyPNG или RMagick

Я пытался сохранить 8-битные PNG (PNG8) с помощью RMagick ( http://rmagick.rubyforge.org/) и ChunkyPNG ( https://github.com/wvanbergen/chunky_png), но не смог этого сделать,

Однако я могу заставить его работать на RMagick только в том случае, если установка ImageMagick основана на QuantumDepth, равном 8, а не на обычном 16. Изменить этот параметр на лету невозможно - необходимо скомпилировать установку ImageMagick. с этой настройкой. Также установка глубины до 8 при создании изображения или префикса типа формата при сохранении не имеет никакого эффекта.

то есть. img.write('PNG8:image.png')

Во всяком случае, я взглянул на ChunkyPNG, и я действительно предпочитаю использовать его поверх RMagick - просто потому, что он чистый Ruby и не зависит от ImageMagick. Я не могу сохранить PNG8, используя это тоже.

Я должен преобразовать PNG в 8 бит, используя графическую программу -

Мои вопросы:

  1. Есть ли способ сохранить 8-битные PNG-файлы должным образом, как это делается в ImageMagick Q8 на компьютере с установленным ImageMagick Q16?

  2. Может кто-нибудь предоставить указатели, как сделать мой собственный 4-битный кодировщик в ChunkyPNG или знаете способ сохранить PNG8 с ним?

Заранее спасибо..

1 ответ

Решение

Что именно вы подразумеваете под PNG8? 8-битная шкала серого, 8-битный индексированный цвет, 3x8 бит RGB или 4x8 бит RGBA? Все эти цветовые режимы поддерживаются ChunkyPNG.

По умолчанию ChunkyPNG пытается определить лучший цветовой режим для сохранения вашего изображения. Вы можете перезаписать его, указав хэш опций для метода save:

image.save('filename.png', color_mode: ChunkyPNG::COLOR_TRUECOLOR)
# Or: ChunkyPNG::COLOR_TRUECOLOR_ALPHA    

image.to_blob(color_mode: ChunkyPNG::COLOR_INDEXED, bit_depth: 8)

Дополнительная информация: https://github.com/wvanbergen/chunky_png/wiki

Другие вопросы по тегам