Very strange interaction between scipy and PIL

Hi all, I'm seeing an extremely strange behavior. Consider the following: In [1]: import Image In [2]: im=Image.open('slide_img0065_sm.jpg') In [3]: import scipy In [4]: arr=scipy.imread('slide_img0065_sm.jpg') --------------------------------------------------------------------------- IOError Traceback (most recent call last) ? /usr/lib/python2.2/site-packages/scipy/pilutil.py in imread(name='slide_img0065_sm.jpg', flatten=0) 39 grayscale layer. 40 """ ---> 41 im = Image.open(name) im = undefined, global Image = <module 'Image' from '/usr/lib/python2.2/site-packages/PIL/Image.pyc' [imported]>, global open = undefined, name = 'slide_img0065_sm.jpg' 42 return fromimage(im,flatten=flatten) 43 /usr/lib/python2.2/site-packages/PIL/Image.py in open(fp=<open file 'slide_img0065_sm.jpg', mode 'rb'>, mode='r') 1572 pass 1573 -> 1574 raise IOError("cannot identify image file") global IOError = undefined 1575 1576 # IOError: cannot identify image file When you realize that the code for imread() does only: def imread(name,flatten=0): """Read an image file from a filename. Optional arguments: - flatten (0): if true, the image is flattened by calling convert('F') on the resulting image object. This flattens the color layers into a single grayscale layer. """ im = Image.open(name) return fromimage(im,flatten=flatten) it makes no sense whatsoever! Somehow, the fact of importing scipy seems to mess something internally in whatever it is that Image.open does, if Image was imported first. If you ONLY use scipy, it works fine: In [1]: import scipy In [2]: arr=scipy.imread('slide_img0065_sm.jpg') In [3]: arr.shape Out[3]: (387, 577, 3) And here's an even better one. Compare these two scenarios: In [1]: import Image,scipy In [2]: im=Image.open('slide_img0065_sm.jpg') --------------------------------------------------------------------------- IOError Traceback (most recent call last) ? /usr/lib/python2.2/site-packages/PIL/Image.py in open(fp=<open file 'slide_img0065_sm.jpg', mode 'rb'>, mode='r') 1572 pass 1573 -> 1574 raise IOError("cannot identify image file") global IOError = undefined 1575 1576 # IOError: cannot identify image file In [3]: VS: In [1]: import scipy,Image In [2]: im=Image.open('slide_img0065_sm.jpg') In [3]: This means that importing scipy AFTER Image breaks something, but importing it before does not. If anyone can crack this one, I'd love to hear. I tried for a while already, but didn't get very far. Best, f.

On Fri, 24 Oct 2003, Fernando Perez wrote:
I'm seeing an extremely strange behavior. Consider the following:
<snip>
If anyone can crack this one, I'd love to hear. I tried for a while already, but didn't get very far.
This behavior was due to incomplete implementation of ppimport function and now it is fixed in CVS. Thanks for reporting it, Pearu

Pearu Peterson wrote:
This behavior was due to incomplete implementation of ppimport function and now it is fixed in CVS.
Thanks for reporting it,
No prob. Thanks for fixing it! This was really weird, I'm glad you were able to track it so quickly. Best, f
participants (2)
-
Fernando Perez
-
Pearu Peterson