2009/1/6 Luka Napotnik <luka.napot...@gmail.com>:
> I'm trying to use GraphicsMagic (the successor of ImageMagick) to
> manipulate a GdkPixbuf image buffer. The problem is that the program
> segfaults, probably due to the raw nature of the buffer which the Magick
> API doesn't handle very good.
> I'm opening the image buffer with MagickReadImageBlob() and then apply
> some filters.

libMagick (usually) expects images as RGBARGBARGBA, with 16 bits for
each value. GdkPixbuf is always  RGBRGBRGB, or RGBARGBARGBA, with 8
bits per value.

You will probably need to allocate a big chunk of memory and unpack
your GdkPixbuf into that as 16-bit values, then call
MagickReadImageBlob(). Going the other way, you'll need to build an
empty GdkPixbuf (ie. one with memory allocated for it), then pack the
libMagick buffer down into that from 16 to 8 bits.

Other image processing libraries are more flexible in how they can
represent pixels and can skip these pack/unpack steps. It depends what
kind of processing you want to perform and whether some other library
also has what you need.

I help maintain vips:

  http://www.vips.ecs.soton.ac.uk

Which can do RGB or RGBA with 8 bit values, but of course might not
have the particular filter you need.

John
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to