我在imagemagick Q8中使用MagickCore而我无法设置特定像素,这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <magick/MagickCore.h>
#include <string.h>
int main(int argc,char **argv)
{
Image *imagen;
ImageInfo *imagen_info;
ExceptionInfo *exception;
PixelPacket *q;
MagickCoreGenesis(*argv,MagickTrue);
exception=AcquireExceptionInfo();
imagen_info = AcquireImageInfo();
(void) CopyMagickString(imagen_info->filename,argv[1],MaxTextExtent);
ReadImage(imagen_info, exception);
q = GetAuthenticPixels(imagen,0,0,1,1,exception);
q->red = 255;
q->green = 123;
q->blue = 220;
SyncAuthenticPixels(imagen,exception);
/* Write the image then destroy it. */
WriteImage(imagen_info, imagen);
DestroyImage(imagen);
DestroyExceptionInfo(exception);
MagickCoreTerminus();
return 0;
}
我正在尝试从文件中读取图像,然后编辑像素,然后将图像保存到磁盘。
我做错了什么?
答案 0 :(得分:0)
从提供的示例中,您的imagen
变量保留在NULL指针中。它应该由ReadImage
的返回值指定。
imagen = ReadImage(imagen_info, exception);
我看到的唯一其他问题是在PixelPacket
上分配颜色值。假设您使用RGB,则需要计算Quantum颜色值。
q->red = 255 * QuantumRange;
q->green = 123 * QuantumRange;
q->blue = 220 * QuantumRange;
注意:这将发出编译器警告,请参阅docs了解颜色