For me, if I change the script from the PR to what is shown below,
everything works fine in both Python 2.7 and 3.4 (Anaconda environments,
everything updated):
##################
url = 'http://www.libpng.org/pub/png/img_png/pngnow.png'
try:
    import urllib2
    data = urllib2.urlopen(url)
except Exception:
    import urllib.request
    from io import BytesIO
    data = BytesIO(urllib.request.urlopen(url).read())

from matplotlib import pyplot

image = pyplot.imread(data)  # crash on py3.x
pyplot.imshow(image)
pyplot.show()
#################
But as you can see, the Python 3 version requires the addition of BytesIO
and read(). I take it that this is not supposed to be the case.

Ryan

On Fri, Mar 20, 2015 at 11:48 AM, Ryan Nelson <rnelsonc...@gmail.com> wrote:

> Thanks, Ben. I should have made that more clear. If I run the code from
> the PR, I get the following error:
>
> Traceback (most recent call last):
>   File "junk.py", line 11, in <module>
>     image = pyplot.imread(data)  # crash on py3.x
>   File
> "/home/nelson/apps/miniconda/lib/python3.4/site-packages/matplotlib/pyplot.py",
> line 2215, in imread
>     return _imread(*args, **kwargs)
>   File
> "/home/nelson/apps/miniconda/lib/python3.4/site-packages/matplotlib/image.py",
> line 1270, in imread
>     return handler(fname)
> RuntimeError: _image_module::readpng: file not recognized as a PNG file
>
> My code that I'm trying to port essentially does the same thing, and I get
> the same error. I ran this example just now from Anaconda Python 3.4
> install with MPL 1.4.3.
>
> My impression from the PR was that this should work out of the box now. I
> figured that maybe that was not quite the case. The implementations between
> Py2 and 3 are quite different. Figured there must be a different way that I
> wasn't aware of.
>
> Ryan
>
> On Fri, Mar 20, 2015 at 9:51 AM, Benjamin Root <ben.r...@ou.edu> wrote:
>
>> According to the PR you reference, the fix for this was merged back in
>> Jan 2013, so that means that this fix is in version 1.2.x and up. Are you
>> saying that you still can't do imread(urllib.request.urlopen(url))?
>>
>> On Thu, Mar 19, 2015 at 8:54 PM, Ryan Nelson <rnelsonc...@gmail.com>
>> wrote:
>>
>>> Hello all,
>>>
>>> I'm porting over some code that used Py2.7 urllib2.urlopen(url) to grab
>>> some image data from the net and load with pyplot.imread. It doesn't work
>>> quite right in Py3.4. I found a couple of refs:
>>>
>>> https://github.com/matplotlib/matplotlib/pull/1650
>>>
>>> http://stackoverflow.com/questions/15183170/python-crash-when-downloading-image-as-numpy-array
>>>
>>> They suggest io.BytesIO(urllib.request.urlopen(url).read()) as a
>>> replacement for Py3. Is this the best practice? Does anyone know a simpler
>>> way to do this?
>>>
>>> Ryan
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> Dive into the World of Parallel Programming The Go Parallel Website,
>>> sponsored
>>> by Intel and developed in partnership with Slashdot Media, is your hub
>>> for all
>>> things parallel software development, from weekly thought leadership
>>> blogs to
>>> news, videos, case studies, tutorials and more. Take a look and join the
>>> conversation now. http://goparallel.sourceforge.net/
>>> _______________________________________________
>>> Matplotlib-users mailing list
>>> Matplotlib-users@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>>
>>>
>>
>
------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to