Re: [Matplotlib-users] imshow, imsave to PIL image conversion

2010-06-02 Thread rugspin

Thanks Jae-Joon and Friedrich

I will try out both solutions.

Regards Hans



Jae-Joon Lee wrote:
> 
> On Tue, Jun 1, 2010 at 2:22 PM, rugspin  wrote:
>> That's doing it, thought there might be an internal way within
>> matplotlib,
>> but I could figure one.
> 
> If you need more hard-core way of doing this,
> 
> a = np.arange(16384).reshape(128, 128)
> 
> from matplotlib.colors import Normalize
> import matplotlib.cm as cm
> norm = Normalize(vmin=0, vmax=16383)
> cmap = cm.summer
> 
> A = (cmap(norm(a))*255).astype(np.uint8)
> 
> import Image
> pilim = Image.fromarray(A, "RGBA")
> 
> --
> 
> ___
> Matplotlib-users mailing list
> Matplotlib-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
> 
> 

-- 
View this message in context: 
http://old.nabble.com/imshow%2C-imsave-to-PIL-image-conversion-tp28736246p28753655.html
Sent from the matplotlib - users mailing list archive at Nabble.com.


--

___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] imshow, imsave to PIL image conversion

2010-06-01 Thread rugspin

Thanks Jae-Joo

That's doing it, thought there might be an internal way within matplotlib,
but I could figure one.
I'm quite confused with the canvas, dpi, ...

Regards Hans



Jae-Joon Lee wrote:
> 
> You may use StringIO.
> 
> from scipy import *
> from pylab import *
> from PIL import Image
> 
> import cStringIO
> 
> 
> a = arange(16384).reshape(128,128)
> 
> f = cStringIO.StringIO()
> imsave(f, a, cmap=cm.summer,vmin=0,vmax=16383, format="png") # you'd
> better set the format explicitly.
> f.reset()
> b = Image.open(f)
> f.close()
> 
> IHTH,
> 
> -JJ
> 
> 
> On Tue, Jun 1, 2010 at 5:18 AM, rugspin  wrote:
>>
>>
>>
>> Angus McMorland-2 wrote:
>>>
>>> On 31 May 2010 23:17, Angus McMorland  wrote:
>>>
>>>> On 31 May 2010 19:49, rugspin  wrote:
>>>>
>>>>>
>>>>> I have a small problem how to convert an image from matplotlib to PIL
>>>>>
>>>>> right now doing somthing like this:
>>>>> --
>>>>> from scipy import *
>>>>> from pylab import *
>>>>> from PIL import Image
>>>>>
>>>>> a = arange(16384).reshape(128,128)
>>>>> imsave( "test.png", a, cmap=cm.summer,vmin=0,vmax=16383)
>>>>> b = Image.open("test.png" )
>>>>> --
>>>>>
>>>>
>>>> The Image.fromarray function should do what you want. For example,
>>>>
>>>> import numpy as np   # note: use of "from foo import *"
>>>> import Image             # is discouraged where possible
>>>>
>>>> a = np.arange(128)[None,:] * np.ones(128)[:,None]
>>>>
>>>
>>> Sorry - I was playing around with a few iterations of this line, and
>>> didn't
>>> provide the most useful one. Your example:
>>>
>>> a = np.arange(128**2).reshape(128,128)
>>>
>>> should also work fine.
>>>
>>>
>>>> b = Image.fromarray(a)
>>>> c = np.asarray(b)
>>>> np.all(c == a)
>>>>   -> True
>>>>
>>>> I hope that helps,
>>>>
>>>> Angus.
>>>>
>>>
>>> --
>>> AJC McMorland
>>> Post-doctoral research fellow
>>> Neurobiology, University of Pittsburgh
>>>
>>> --
>>>
>>>
>>> ___
>>> Matplotlib-users mailing list
>>> Matplotlib-users@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>>
>>>
>>
>> Thank you Angus
>> but that's not exactly what i was looking for. The fromarray function is
>> very basic, so I would have to take care of all the RGBA of the array.
>> the
>> imshow and imsave functions take care of all that for example adding a
>> colormap. After choosing a reasonable colormap (vmin, vmax, ) I would
>> like to convert this into a PIL image.
>>
>> Best Regard
>> Hans
>>
>> --
>> View this message in context:
>> http://old.nabble.com/imshow%2C-imsave-to-PIL-image-conversion-tp28736246p28739401.html
>> Sent from the matplotlib - users mailing list archive at Nabble.com.
>>
>>
>> --
>>
>> ___
>> Matplotlib-users mailing list
>> Matplotlib-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>
> 
> --
> 
> ___
> Matplotlib-users mailing list
> Matplotlib-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
> 
> 

-- 
View this message in context: 
http://old.nabble.com/imshow%2C-imsave-to-PIL-image-conversion-tp28736246p28745632.html
Sent from the matplotlib - users mailing list archive at Nabble.com.


--

___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] imshow, imsave to PIL image conversion

2010-06-01 Thread rugspin



Angus McMorland-2 wrote:
> 
> On 31 May 2010 23:17, Angus McMorland  wrote:
> 
>> On 31 May 2010 19:49, rugspin  wrote:
>>
>>>
>>> I have a small problem how to convert an image from matplotlib to PIL
>>>
>>> right now doing somthing like this:
>>> --
>>> from scipy import *
>>> from pylab import *
>>> from PIL import Image
>>>
>>> a = arange(16384).reshape(128,128)
>>> imsave( "test.png", a, cmap=cm.summer,vmin=0,vmax=16383)
>>> b = Image.open("test.png" )
>>> --
>>>
>>
>> The Image.fromarray function should do what you want. For example,
>>
>> import numpy as np   # note: use of "from foo import *"
>> import Image # is discouraged where possible
>>
>> a = np.arange(128)[None,:] * np.ones(128)[:,None]
>>
> 
> Sorry - I was playing around with a few iterations of this line, and
> didn't
> provide the most useful one. Your example:
> 
> a = np.arange(128**2).reshape(128,128)
> 
> should also work fine.
> 
> 
>> b = Image.fromarray(a)
>> c = np.asarray(b)
>> np.all(c == a)
>>   -> True
>>
>> I hope that helps,
>>
>> Angus.
>>
> 
> -- 
> AJC McMorland
> Post-doctoral research fellow
> Neurobiology, University of Pittsburgh
> 
> --
> 
> 
> ___
> Matplotlib-users mailing list
> Matplotlib-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
> 
> 

Thank you Angus
but that's not exactly what i was looking for. The fromarray function is
very basic, so I would have to take care of all the RGBA of the array. the
imshow and imsave functions take care of all that for example adding a
colormap. After choosing a reasonable colormap (vmin, vmax, ) I would
like to convert this into a PIL image.

Best Regard
Hans

-- 
View this message in context: 
http://old.nabble.com/imshow%2C-imsave-to-PIL-image-conversion-tp28736246p28739401.html
Sent from the matplotlib - users mailing list archive at Nabble.com.


--

___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


[Matplotlib-users] imshow, imsave to PIL image conversion

2010-05-31 Thread rugspin

I have a small problem how to convert an image from matplotlib to PIL

right now doing somthing like this:
--
from scipy import *
from pylab import *
from PIL import Image

a = arange(16384).reshape(128,128)
imsave( "test.png", a, cmap=cm.summer,vmin=0,vmax=16383)
b = Image.open("test.png" )
--

so I have a 128x128 array, get a 128x128 size png by making use of a
colormap and get a 128x128 size PIL image. But so far I could figure out a
way to do this directly without writing a temporary png and reading it
again, which is quite slow. My important point here is to keep the the pixel
resolution.
I would be glad about some help

Regards Hans
-- 
View this message in context: 
http://old.nabble.com/imshow%2C-imsave-to-PIL-image-conversion-tp28736246p28736246.html
Sent from the matplotlib - users mailing list archive at Nabble.com.


--

___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users