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

Reply via email to