Skip to content

Commit

Permalink
Merge pull request matplotlib#5927 from WeatherGod/backport_5910
Browse files Browse the repository at this point in the history
Merge pull request matplotlib#5910 from mdboom/image-read-from-url
  • Loading branch information
mdboom committed Jan 27, 2016
2 parents dc3f061 + 0ea4ec9 commit 99ad89d
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 10 deletions.
9 changes: 9 additions & 0 deletions lib/matplotlib/tests/test_image.py
Expand Up @@ -6,6 +6,8 @@
import io
import os

from nose.plugins.attrib import attr

import numpy as np

from matplotlib.testing.decorators import (image_comparison,
Expand Down Expand Up @@ -499,6 +501,13 @@ def test_minimized_rasterized():
assert False


@attr('network')
def test_load_from_url():
req = six.moves.urllib.request.urlopen(
"http://matplotlib.org/_static/logo_sidebar_horiz.png")
Z = plt.imread(req)


if __name__=='__main__':
import nose
nose.runmodule(argv=['-s','--with-doctest'], exit=False)
33 changes: 23 additions & 10 deletions src/_png.cpp
Expand Up @@ -131,7 +131,15 @@ static PyObject *Py_write_png(PyObject *self, PyObject *args, PyObject *kwds)
py_file = filein;
}

if ((fp = mpl_PyFile_Dup(py_file, (char *)"wb", &offset))) {
#if PY3K
if (close_file) {
#else
if (close_file || PyFile_Check(py_file)) {
#endif
fp = mpl_PyFile_Dup(py_file, (char *)"wb", &offset);
}

if (fp) {
close_dup_file = true;
} else {
PyErr_Clear();
Expand Down Expand Up @@ -285,10 +293,23 @@ static PyObject *_read_png(PyObject *filein, bool float_result)
py_file = filein;
}

if ((fp = mpl_PyFile_Dup(py_file, (char *)"rb", &offset))) {
#if PY3K
if (close_file) {
#else
if (close_file || PyFile_Check(py_file)) {
#endif
fp = mpl_PyFile_Dup(py_file, (char *)"rb", &offset);
}

if (fp) {
close_dup_file = true;
if (fread(header, 1, 8, fp) != 8) {
PyErr_SetString(PyExc_IOError, "error reading PNG header");
goto exit;
}
} else {
PyErr_Clear();

PyObject *read_method = PyObject_GetAttrString(py_file, "read");
if (!(read_method && PyCallable_Check(read_method))) {
Py_XDECREF(read_method);
Expand All @@ -298,14 +319,6 @@ static PyObject *_read_png(PyObject *filein, bool float_result)
goto exit;
}
Py_XDECREF(read_method);
}

if (fp) {
if (fread(header, 1, 8, fp) != 8) {
PyErr_SetString(PyExc_IOError, "error reading PNG header");
goto exit;
}
} else {
_read_png_data(py_file, header, 8);
}

Expand Down

0 comments on commit 99ad89d

Please sign in to comment.