On Sat, Apr 7, 2012 at 11:25 AM, Jostein Bø Fløystad <jostein.floystad@gmail.com> wrote:
I've had problems saving MxNx3 (RGB) numpy arrays as images using
imsave. It fails with an exception, and the problem seems to be line
1243 in image.py:

figsize = [x / float(dpi) for x in arr.shape[::-1]]

The purpose of arr.shape[::-1] seems to be to reorder the height and
width dimensions. It works as intended for MxN arrays, but not NxMx3
arrays -- they cause a function to complain about an argument too
many.

I have modified the above line to use (arr.shape[1], arr.shape[0])
instead of arr.shape[::-1], and that solves the problem for me, and I
get the output I expect (and the code still passes all tests it should
pass). However, there could very well be subtleties in the codebase
that I don't know about.

The attached patches add a simple test case, the above mentioned
change and a few updates to the documentation of imsave.

Best,

Jostein.


Jostein,

That second patch certain fixes that part of the bug, but I still can't save an NxMx3 (or 4) array using imsave().  Are you sure this is all of the patch?

I get the following exception:

```
Traceback (most recent call last):
  File "quickshow.py", line 106, in <module>
    plt.imsave(stem + '.png', cm(d))
  File "/home/broot/.local/lib/python2.7/site-packages/matplotlib-1.2.x-py2.7-linux-x86_64.egg/matplotlib/pyplot.py", line 1757, in imsave
    return _imsave(*args, **kwargs)
  File "/home/broot/.local/lib/python2.7/site-packages/matplotlib-1.2.x-py2.7-linux-x86_64.egg/matplotlib/image.py", line 1244, in imsave
    fig = Figure(figsize=figsize, dpi=dpi, frameon=False)
  File "/home/broot/.local/lib/python2.7/site-packages/matplotlib-1.2.x-py2.7-linux-x86_64.egg/matplotlib/figure.py", line 269, in __init__
    self.bbox_inches = Bbox.from_bounds(0, 0, *figsize)
TypeError: from_bounds() takes exactly 4 arguments (5 given)
```

Cheers!
Ben Root