ImageMagick:按BGR顺序写入像素

ImageMagick:按BGR顺序写入像素,imagemagick,Imagemagick,我想将(很多)JPEG图像转换为Sun光栅格式(例如,请参阅),因为我的程序只能使用这种格式 问题是我的程序只允许旧类型的图像 或标准,即以BGR顺序写入像素。(我应该改一下,但是没有时间)。 默认情况下,ImageMagick生成RGB格式的文件 我找到了一个方法来交换颜色平面,但是由于文件的样式是以RGB编写的,所以我得到了奇特的颜色 这可能是传递给ImageMagick的一个简单选项,但我没有找到它。 你有办法吗?我有办法在RGB图像中交换红色和蓝色: convert ( image_RG

我想将(很多)JPEG图像转换为Sun光栅格式(例如,请参阅),因为我的程序只能使用这种格式

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

我找到了一个方法来交换颜色平面,但是由于文件的样式是以RGB编写的,所以我得到了奇特的颜色

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

我有办法在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

您只需从原始图像中剪切通道并按相反顺序写入即可。

另一种交换颜色的方法是使用
-color matrix
选项。例如,要将RGB转换为BGR:

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

参考资料:

在Imagemagick 6中,您可以使用-swap命令轻松完成此操作。让我们交换徽标图像中的红色和蓝色通道

对于非常旧版本的Imagemagick,请使用RGB而不是sRGB


在Imagemagick 7中,使用magick而不是转换。

在Imagemagick中,我会想到这一点

convert image.jpg 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

谢谢我试过你的例子,但不起作用。您确定语法吗?在任何情况下,这听起来像是您交换了频道。但在这种情况下,颜色会有所不同。在我的was中,这仅仅是一个图像格式的问题。语法:尝试删除“\”符号和特征线,我添加它是为了可读性。是的,频道刚刚交换,当您在standart viewer中查看转换后的图像时,颜色看起来很花哨。但是我认为您的程序读取和查看它是正确的,那么您为什么需要其他东西?(对不起,我离开了几天)我的程序测试标题中的类型字段。如果该值与旧值或标准值不同,则停止。我可以修复这个问题,但那将是一个糟糕的黑客行为。顺便说一句,nautilus thumbnailer(在GNOME桌面下)似乎无法显示使用image magick转换的RGB图像。
convert image.jpg SUN:image.sun
convert logo.png -separate +channel -swap 0,2 -combine -colorspace sRGB logo_bgr.sun