gpt4 book ai didi

c - Graphicsmagick 图像未正确保存?

转载 作者:太空宇宙 更新时间:2023-11-04 04:34:59 24 4
gpt4 key购买 nike

我在使用 GraphicsMagick 时遇到问题。我正在重新排列图像中的像素并尝试保存它,但生成的图像始终相同。如何让它在保存前更新图像?
这是我的代码:

PixelPacket *write_pixels = SetImagePixelsEx(
image,
0, // x
0, // y
w, // columns
h, // rows
&exception
);
for (int y = 0; y < h; y++) {
printf("%hhu -> ", write_pixels[y * w].red);
printf("%hhu -> ", pixels[y][0].red);
for (int x = 0; x < w; x++) {
write_pixels[x + y * w] = pixels[y][x];
}
printf("%hhu\n", write_pixels[y * w].red);
}
SyncImagePixelsEx(image, &exception);

strcpy(image->filename, outfile);
if (!WriteImage(imageInfo, image)) {
CatchException(&image->exception);
return 1;
}

我打印了一些输出以确保它正常工作。这是一些输出:

81 -> 64 -> 64
68 -> 65 -> 65
84 -> 66 -> 66
80 -> 67 -> 67
64 -> 68 -> 68
93 -> 69 -> 69
86 -> 70 -> 70
91 -> 71 -> 71
107 -> 72 -> 72
85 -> 73 -> 73
111 -> 74 -> 74
102 -> 75 -> 75

所以我知道像素正在正确更改。和 docs假设我需要更新像素的是我使用的 SyncImagePixelsEx()。为什么在我保存图像时不更新图像?

我已经检查了所有内容,但每次以新文件名保存的图像看起来总是与原始图像相同。

最佳答案

经过几个小时的挫折,我终于找到了解决方案。使用像素数据创建新图像:

Image *new_image;
new_image = ConstituteImage(
image->columns, // width
image->rows, // height
"RGBO", // order of pixel array
CharPixel, // type
write_pixels, // pixels
&exception
);

strcpy(new_image->filename, outfile);
if (!WriteImage(image_info, new_image)) {
CatchException(&new_image->exception);
return 1;
}

关于c - Graphicsmagick 图像未正确保存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31713866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com