ImageMagick:以BGR顺序写入像素

时间:2011-08-11 12:25:00

标签: imagemagick

我想将(很多)JPEG图像转换为Sun Raster格式(例如参见here),因为我的程序只能使用这种格式。

问题是我的程序只允许使用Old类型的图像 或标准,即以BGR顺序写入的像素。 (我应该改变,但没有时间)。 默认情况下,ImageMagick以RGB格式生成文件。

我找到了trick来交换颜色平面,但由于文件的样式是RGB格式,我会得到奇特的颜色。

这可能是传递给ImageMagick的一个简单选项,但我没有找到它。 你有什么想法吗?

3 个答案:

答案 0 :(得分:6)

交换颜色的另一种方法是使用-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/

答案 1 :(得分:3)

我知道如何在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

您只需从原始图像中剪切频道,然后按相反顺序写入。

答案 2 :(得分:1)

我会想到在Imagemagick中

convert image.jpg image.sun

convert image.jpg SUN:image.sun
如果这是太阳栅格格式的标准,

将转换为BGR格式。见imagemagick.org/script/formats.php。

你试过吗?

如果这不起作用,那么使用我的-swap命令,但写入.sun文件格式而不是png,我在上面使用过。那是

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