ImageMagick: записывать пиксели в порядке BGR - PullRequest
4 голосов
/ 11 августа 2011

Я хочу преобразовать (много) изображений JPEG в формат Sun Raster (см., Например, здесь ), потому что моя программа может использовать только этот формат.

Проблема в том, что моя программа допускает только изображения типа Old или Стандартный, то есть с пикселем, записанным в порядке BGR. (Я должен изменить это, но у меня нет времени). По умолчанию ImageMagick создает файлы в формате RGB.

Я нашел трюк , чтобы поменять цветовые плоскости, но поскольку файл имеет стиль, написанный как RGB, я получаю причудливые цвета.

Вероятно, это простой вариант перехода на ImageMagick, но я его не нашел. У вас есть идея?

Ответы [ 4 ]

6 голосов
/ 16 августа 2017

Другой способ поменять цвета - использовать опцию -color-matrix.Например, для преобразования RGB в BGR:

convert input.png -color-matrix '0 0 1
                                 0 1 0
                                 1 0 0' output.png

Ссылка: http://www.imagemagick.org/Usage/color_mods/

3 голосов
/ 16 августа 2017

В Imagemagick 6 это легко сделать с помощью команды -swap. Поменяем местами красный и синий каналы на изображении с логотипом.

enter image description here

convert logo.png -separate +channel \
-swap 0,2 -combine -colorspace sRGB logo_bgr.png

enter image description here

Для очень старых версий Imagemagick используйте RGB, а не sRGB.

В Imagemagick 7 используйте магию, а не конвертируйте.

3 голосов
/ 19 августа 2011

У меня есть идея, как поменять красный и синий цвета в изображении RGB:

convert ( image_RGB.bmp -channel B -separate ) \
    ( image_RGB.bmp -channel G -separate ) \
    ( image_RGB.bmp -channel R -separate ) -channel RGB -combine image_BGR.bmp

Вы просто вырезаете каналы из исходного изображения и пишете их в обратном порядке.

1 голос
/ 17 августа 2017

Я бы подумал, что в Imagemagick

convert image.jpg image.sun

или

convert image.jpg SUN:image.sun

конвертируется в формат BGR, если это стандарт для формата растровых изображений.См. Imagemagick.org/script/formats.php.

Вы пробовали это?

Если это не сработает, используйте команду my -swap, но запишите в файл формата .sun, а не в png, который я использовал выше.Это

convert logo.png -separate +channel -swap 0,2 -combine -colorspace sRGB logo_bgr.sun
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...