Magickcore无法设置/获取单个像素

时间:2013-12-06 11:44:01

标签: c imagemagick

我在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;
}

我正在尝试从文件中读取图像,然后编辑像素,然后将图像保存到磁盘。

我做错了什么?

1 个答案:

答案 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了解颜色