dealing with atleast the urllib renaming .
Post by Ryan NelsonFor 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,
##################
url = 'http://www.libpng.org/pub/png/img_png/pngnow.png'
import urllib2
data = urllib2.urlopen(url)
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
Post by Ryan NelsonThanks, Ben. I should have made that more clear. If I run the code from
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
Post by Benjamin RootAccording 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))?
Post by Ryan NelsonHello 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
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
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
https://lists.sourceforge.net/lists/listinfo/matplotlib-users