Hi, Never mind people. I've started to use PythonMagickWand.py which is a ctypes binding to MagickWand. Ref.: http://www.procoders.net/index.php?s=pythonmagick
Very nice solution because it reveals all MagickWand fucntions to Python. The manual: http://www.imagemagick.org/script/magick-wand.php I've earlier used MagickWand in Gscreendump http://code.google.com/p/gscreendump/source/browse/trunk/src/sd_imagemagick.c One thing though, PythonMagickWand.py lacks a definition for PixelSetColor() function so I added it to my local copy. # bool PixelSetColor( PixelWand pxl_wnd, string imagemagick_col_str ) # Ref: http://www.magickwand.org/PixelSetColor.html <http://www.magickwand.org/PixelSetColor.html> try: _magick.PixelSetColor.restype = MagickStatusType _magick.PixelSetColor.argtypes = (PixelWand, ctypes.POINTER(ctypes.c_char), ) except AttributeError,e: print e else: PixelSetColor = _magick.PixelSetColor ----------------- Here is a prototype how I use the MagickWand binding from Python. (FLIP_VERTICAL, FLIP_HORIZONTAL) = range(2) def magickwand_flip_image(wand, direction): # Image name filename = MagickGetImageFilename(wand) if direction == FLIP_VERTICAL: status = MagickFlipImage(wand) else: # direction == FLIP_HORIZONTAL status = MagickFlopImage(wand) if status.value != True: err = magickwand_get_err_msg(wand) err_msg = "ImageMagick: Cannot flip the image %s. %s.\n" % ( filename, err,) raise ImageMagickException(err_msg) return wand def magickwand_call_function(filename_from, filename_to, func_cb, *args): ret = False try: # Open the image wand = NewMagickWand() status = MagickReadImage(wand, filename_from) if status.value != True: err = magickwand_get_err_msg(wand) MagickClearException(wand) err_msg = "ImageMagick: Cannot open image %s. %s.\n" % (filename_from, err,) raise ImageMagickException(err_msg) # Call the MagickWand function. func_cb(wand, *args) MagickClearException(wand) # Save the image # This seq faults if the file is write protected. # status = MagickWriteImage(image, filename); if filename_from == filename_to or filename_to == None: filename = filename_from else: filename = filename_to # This is more manageable status = MagickWriteImages(wand, filename, MagickTrue) if status.value != True: err = magickwand_get_err_msg(wand) MagickClearException(wand) err_msg = "ImageMagick: Cannot write to %s. %s.\n" % (filename_from, err,) raise ImageMagickException(err_msg) ret = True except Exception, e: import sys sys.stderr.write("%s\n" % (e.msg,)) finally: DestroyMagickWand(wand) return ret # Test it: ret = magickwand_call_function("test1.png", "test2.png", magickwand_flip_image, FLIP_VERTICAL) print "ret=", ret ret = magickwand_call_function("test1.png", "test3.png", magickwand_flip_image, FLIP_HORIZONTAL) print "ret=", ret -------------- Many thanks to those who developed PythonMagickWand.py! Kindly Osmo (Moma) Antero Grønland http://www.futuredesktop.org (http://www.futuredesktop.com) <http://www.magickwand.org/PixelSetColor.html> On 03/24/2010 07:39 AM, Osmo Maatta wrote: > Hello, > I want to use PythonMagick to convert an image to gray scale. I've > read the documentation of Magick++ on > http://www.imagemagick.org/Magick++ but cannot figure out how to > access the GrayscaleType or GRAYColorspace attributes from Python. > Please help. > > Sample code: > > import PythonMagick > > filename = "test1.png" > img = PythonMagick.Image() > img.read(filename) > > img.type = GrayscaleType > > #img.quantizeColorSpace(??) > #img.quantize() > #img.channel(PythonMagick.ChannelType.RedChannel ??) > > img.write("test2.png") > ---- > > This system is: 64bit Ubuntu 9.10. > > $ apt-cache show python-pythonmagick > python-pythonmagick - Object-oriented Python interface to ImageMagick > Version: 0.9.1-1ubuntu1 > ---- _______________________________________________ Magick-users mailing list [email protected] http://studio.imagemagick.org/mailman/listinfo/magick-users
