我不知道从哪里开始。
我想用数组中的 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
成员(加上第四 channel 的另一个成员)。最后,将更改写入磁盘:my_image.syncPixels();
my_image.write("c:\\temp\\output.jpg");
关于c++ - 如何通过 ImageMagicK 将图像数据放入数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33361457/