Oops. I meant bits not bytes in my earlier statements. Sorry.

On Thu, Apr 16, 2015 at 11:24 AM, Ryan Nelson <rnelsonc...@gmail.com> wrote:

> xnview says it is 128*128*8, but  "print
>> imread('python-gray.png').shape" says (128, 128, 3), however I suppose
>> it should be (128, 128)!
>
> Not sure that this is true, but I guess that xnview is using the third
> dimension here to refer to a number of bytes. In this case, it is two
> bytes, one for the black/white level and the other for alpha level. When
> you import this with imread, the png is converted into a Numpy array. The
> default behavior in this case is to create an array which is 128*128*3
> because the third dimmension is the (R,G,B) levels, which will all be equal
> for a gray scale image. This behavior is probably intentional so that you
> don't have to write different code to handle gray/color images.
>
> For python-color.png, it is my fault. xnview says it is 128*128*32, so
>> it has alpha channel. Hence "imread().shape =(128, 128, 4)" is right
>
> If the third dimension from xnview is bytes, then yes, you are correct.
>
> btw. imread return array which has value between 0 and 1 for PNG file.
>> But for other picture format, the value is 0~255. The manual says
>> matplotlib reads PNG only by it self, and other files via PIL.But I
>> think it is better to make the returned array consistent.
>
> That is most likely due to the way that PNG and e.g. older JPG are
> defined. PNG defines each RGBA value using float32, while older JPG uses
> uint8. Therefor, it would not make sense to change the dtype of the image
> on import.
>
> Hope that helps.
> Ryan
>
>
>
>
> On Thu, Apr 16, 2015 at 10:51 AM, oyster <lepto.pyt...@gmail.com> wrote:
>
>> Firstly, thanks, Fabrice Silva
>>
>> I have checked my picture files again.
>>
>> For python-gray.png, now it is attacched here or can be downloaded
>> from
>> http://bbs.blendercn.org/data/attachment/forum/201504/16/222351w3952n3o9968m9a5.png
>> .
>> xnview says it is 128*128*8, but  "print
>> imread('python-gray.png').shape" says (128, 128, 3), however I suppose
>> it should be (128, 128)!
>>
>> For python-color.png, it is my fault. xnview says it is 128*128*32, so
>> it has alpha channel. Hence "imread().shape =(128, 128, 4)" is right
>>
>> btw. imread return array which has value between 0 and 1 for PNG file.
>> But for other picture format, the value is 0~255. The manual says
>> matplotlib reads PNG only by it self, and other files via PIL.But I
>> think it is better to make the returned array consistent.
>>
>>
>> ------------------------------------------------------------------------------
>> BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
>> Develop your own process in accordance with the BPMN 2 standard
>> Learn Process modeling best practices with Bonita BPM through live
>> exercises
>> http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual-
>> event?utm_
>> source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
>> _______________________________________________
>> Matplotlib-users mailing list
>> Matplotlib-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>
>>
>
------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to