Hi,
I would like to save some image data, created and held within a structure in my
C program, using imagemagick. The sample code below compiles without errors, but
does not actually produce a file at the end of it. I suspect I am making a
trivial error but dont understand the magickcore library enough at the moment to
work out what it may be!
Am I initialising the Image and ImageInfo structures correctly? Am I providing
enough information, and is WriteImage the right function to use at the end? The
path passed in to the function for testing purposes is a full path, with a
filename ending in ".png"
Please can someone point out where I am going wrong?
Best regards,
Chris.
void impixbuf_save_to_file(impixbuf *pixbuf, const char *path) {
Image *image;
ImageInfo *image_info;
ExceptionInfo *exception;
PixelPacket *dst;
guchar *src, *s;
gint r, p;
g_print("%s \n", path);
InitializeMagick("/usr/bin/");
exception = g_malloc(sizeof(ExceptionInfo));
GetExceptionInfo(exception);
image_info = CloneImageInfo((ImageInfo *) NULL);
image = AllocateImage(image_info);
image->columns = pixbuf->width;
image->rows = pixbuf->height;
strcpy(image_info->filename, path);
g_print("%s \n", image_info->filename);
src = NULL;
for (r=0; r<pixbuf->height; r++) {
s = src = impixbuf_get_pixel_row(pixbuf, src, 0, r, pixbuf->width);
dst = (PixelPacket *)SetImagePixels(image, 0, r, image->columns, 1);
for (p=0; p<pixbuf->width; p++) {
dst->red = s[PIXEL_RED];
dst->green = s[PIXEL_GREEN];
dst->blue = s[PIXEL_BLUE];
dst->opacity = 255 - s[PIXEL_RGB_ALPHA];
s+=pixbuf->stride;
dst++;
}
}
WriteImage(image_info, image);
DestroyMagick();
}
_______________________________________________
Magick-users mailing list
[email protected]
http://studio.imagemagick.org/mailman/listinfo/magick-users