如何通过 ImageMagicK 将图像数据放入数组?

How to get image data into arrary by ImageMagicK?

不知从何说起

我想用 ImageMagick 读取数组中的图像。

此时没有报错:

My_image.read("c:\a.jpg");

我想将我已经读取的图像数据放入数组中。
我想使用 ImageMagick 库写入文件。

这是我的代码:

...
master.read("c:\a.jpg");

Image my_image("640x480", "white"); 
my_image.modifyImage(); 
Pixels my_pixel_cache(my_image); 
PixelPacket* pixels; 
int start_x = 0, start_y = 0,  size_x = 640, size_y = 480; 
*pixels = Color("black");
*(pixels+200) = Color("green");
my_pixel_cache.sync();

...

但是我无法得到a.jpg的数组。如何获取a.jpg图像数据到数组进行修改?

您必须初始化您的 PixelPacket:

PixelPacket *pixels = my_image.getPixels(0, 0, 640, 480);

然后您可以使用嵌套循环逐像素修改图像:

int w = 640;
for (int y = 0; y != h; ++y)
    for (int x = 0; x != w; ++x)
    {
        pixels[w * y + x].red = 255; // if MAGICKCORE_QUANTUM_DEPTH=8
        pixels[w * y + x].green = 0;
        pixels[w * y + x].blue = 0;
    }

Magick::PixelPacket 是一个 struct,它包含 redgreenblue 成员(加上第 4 个频道的另一个成员)。最后,将更改写入磁盘:

my_image.syncPixels();
my_image.write("c:\temp\output.jpg");