如何通过 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
,它包含 red
、green
和 blue
成员(加上第 4 个频道的另一个成员)。最后,将更改写入磁盘:
my_image.syncPixels();
my_image.write("c:\temp\output.jpg");
不知从何说起
我想用 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
,它包含 red
、green
和 blue
成员(加上第 4 个频道的另一个成员)。最后,将更改写入磁盘:
my_image.syncPixels();
my_image.write("c:\temp\output.jpg");