[mapserver-users] [Python+MapScript] Convert imageObj to PIL Image

2012-09-07 Thread Jelmer Baas
Hi All,

I've been testing today in Python, trying to get a MapScript imageObj into an 
python Image object. This works via the following code:


map.transparent = MS_ON
map.selectOutputFormat('png8')
map.outputformat.imagemode = MS_IMAGEMODE_RGBA
map.outputformat.transparent = MS_ON

img = map.draw()
mem_png = StringIO.StringIO(img.saveToString())
_img = Image.open(mem_png)

However, the _img file lost its transparency, even though it's still (or again) 
PNG. There MUST be a better way of getting the PNG file into PIL, right? 
Something besides writing it to a tempfile, opening it, and deleting it?

On a side note, I only use this rendered image temporarily, I only need to cut 
it up in smaller bits and return those to my client. So if there's some sort of 
format that supports transparcency but without the PNG compression overhead, 
that would be even better! 

Regards,
Jelmer Baas

___
mapserver-users mailing list
mapserver-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users


Re: [mapserver-users] [Python+MapScript] Convert imageObj to PIL Image

2012-09-07 Thread thomas bonfort
IIRC, PIL does not support 8bit pngs with transparency, so writing it
to a file won't help. If you need alpha, you'll have to stick with
32bit pngs.

--
thomas

On Fri, Sep 7, 2012 at 3:35 PM, Jelmer Baas b...@speerit.nl wrote:
 Hi All,

 I've been testing today in Python, trying to get a MapScript imageObj into an 
 python Image object. This works via the following code:


 map.transparent = MS_ON
 map.selectOutputFormat('png8')
 map.outputformat.imagemode = MS_IMAGEMODE_RGBA
 map.outputformat.transparent = MS_ON

 img = map.draw()
 mem_png = StringIO.StringIO(img.saveToString())
 _img = Image.open(mem_png)

 However, the _img file lost its transparency, even though it's still (or 
 again) PNG. There MUST be a better way of getting the PNG file into PIL, 
 right? Something besides writing it to a tempfile, opening it, and deleting 
 it?

 On a side note, I only use this rendered image temporarily, I only need to 
 cut it up in smaller bits and return those to my client. So if there's some 
 sort of format that supports transparcency but without the PNG compression 
 overhead, that would be even better!

 Regards,
 Jelmer Baas

 ___
 mapserver-users mailing list
 mapserver-users@lists.osgeo.org
 http://lists.osgeo.org/mailman/listinfo/mapserver-users
___
mapserver-users mailing list
mapserver-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users


Re: [mapserver-users] [Python+MapScript] Convert imageObj to PIL Image

2012-09-07 Thread Jelmer Baas
Oh, wow, that was so simple. I changed
map.selectOutputFormat('png8')
to
map.selectOutputFormat('png24')

And done. Strangely, though, saving it to a file and re-opening *does* work!

Thanks for the quick reply!

--
Jelmer 

-Original Message-
From: thomas bonfort [mailto:thomas.bonf...@gmail.com] 
Sent: Friday, September 07, 2012 15:50
To: Jelmer Baas
Cc: mapserver-users@lists.osgeo.org
Subject: Re: [mapserver-users] [Python+MapScript] Convert imageObj to PIL Image

IIRC, PIL does not support 8bit pngs with transparency, so writing it
to a file won't help. If you need alpha, you'll have to stick with
32bit pngs.

--
thomas

On Fri, Sep 7, 2012 at 3:35 PM, Jelmer Baas b...@speerit.nl wrote:
 Hi All,

 I've been testing today in Python, trying to get a MapScript imageObj into an 
 python Image object. This works via the following code:


 map.transparent = MS_ON
 map.selectOutputFormat('png8')
 map.outputformat.imagemode = MS_IMAGEMODE_RGBA
 map.outputformat.transparent = MS_ON

 img = map.draw()
 mem_png = StringIO.StringIO(img.saveToString())
 _img = Image.open(mem_png)

 However, the _img file lost its transparency, even though it's still (or 
 again) PNG. There MUST be a better way of getting the PNG file into PIL, 
 right? Something besides writing it to a tempfile, opening it, and deleting 
 it?

 On a side note, I only use this rendered image temporarily, I only need to 
 cut it up in smaller bits and return those to my client. So if there's some 
 sort of format that supports transparcency but without the PNG compression 
 overhead, that would be even better!

 Regards,
 Jelmer Baas

 ___
 mapserver-users mailing list
 mapserver-users@lists.osgeo.org
 http://lists.osgeo.org/mailman/listinfo/mapserver-users
___
mapserver-users mailing list
mapserver-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users