Hi JP

Thanks for finding this issue. Would you mind placing a small 12-bit tiff online somewhere so that I can use it in the test suite?

It's strange that the matplotlib plugin is not available, since you mention that you have pylab.  Can you import matplotlib without problems?

Regards
Stéfan

On Dec 5, 2011 5:30 AM, "jip" <jeanpatrick.pommier@gmail.com> wrote:
Dear all,

I meet some problem to open/display 12bits tif (16 bits) gray images.
I can open an image but I fail to display it:
import skimage
path='/media/Elements__/Science/Biologie/QTeloFISH/myoblastes HPS/JPP55_nFF/16/DAPI'
image='/1.tif'
from skimage import io as io

print skimage.io.plugin_info('matplotlib')
#skimage.io.use_plugin('matplotlib', 'read')

#dapi=io.imread(path+image,plugin='matplotlib')
dapi=io.imread(path+image)

print type(dapi)
print type(dapi)
print 'dapi.dtype',dapi.dtype

io.imshow(dapi)
#import pylab
#pylab.imshow(dapi)
#pylab.show()
Then I get the following error:
<type 'numpy.ndarray'>
<type 'numpy.ndarray'>
dapi.dtype object
Traceback (most recent call last):
  File "/home/claire/.spyder2/.temp.py", line 28, in <module>
    io.imshow(dapi)
  File "/usr/local/lib/python2.6/dist-packages/skimage-0.4-py2.6-linux-i686.egg/skimage/io/_io.py", line 149, in imshow
    return call_plugin('imshow', arr, plugin=plugin, **plugin_args)
  File "/usr/local/lib/python2.6/dist-packages/skimage-0.4-py2.6-linux-i686.egg/skimage/io/_plugins/plugin.py", line 88, in call
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.6/dist-packages/skimage-0.4-py2.6-linux-i686.egg/skimage/io/_plugins/pil_plugin.py", line 108, in imshow
    Image.fromarray(arr).show()
  File "/usr/lib/python2.6/dist-packages/PIL/Image.py", line 1886, in fromarray
    raise TypeError("Cannot handle this data type")
TypeError: Cannot handle this data type
The default plugin is PIL.If I try to switch to matplotlib (or freeimage), the plugin doesn't seem available:
Traceback (most recent call last):
  File "/home/claire/.spyder2/.temp.py", line 16, in <module>
    dapi=io.imread(path+image,plugin='matplotlib')
  File "/usr/local/lib/python2.6/dist-packages/skimage-0.4-py2.6-linux-i686.egg/skimage/io/_io.py", line 72, in imread
    img = call_plugin('imread', fname, plugin=plugin, **plugin_args)
  File "/usr/local/lib/python2.6/dist-packages/skimage-0.4-py2.6-linux-i686.egg/skimage/io/_plugins/plugin.py", line 86, in call
    (plugin, kind))
RuntimeError: Could not find the plugin "matplotlib" for imread.

I can open the same image with plugin='pil' but I fail to display it:
uint16
(1024, 1536)
Traceback (most recent call last):
  File "/home/claire/.spyder2/.temp.py", line 28, in <module>
    io.imshow(dapi0)
  File "/usr/local/lib/python2.6/dist-packages/skimage-0.4-py2.6-linux-i686.egg/skimage/io/_io.py", line 149, in imshow
    return call_plugin('imshow', arr, plugin=plugin, **plugin_args)
  File "/usr/local/lib/python2.6/dist-packages/skimage-0.4-py2.6-linux-i686.egg/skimage/io/_plugins/plugin.py", line 88, in call
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.6/dist-packages/skimage-0.4-py2.6-linux-i686.egg/skimage/io/_plugins/pil_plugin.py", line 108, in imshow
    Image.fromarray(arr).show()
  File "/usr/lib/python2.6/dist-packages/PIL/Image.py", line 1886, in fromarray
    raise TypeError("Cannot handle this data type")
TypeError: Cannot handle this data type


Does io.imshow() support only 8bits image?

I can open and display the image with readmagick/pylab.

Best regards
Jean-Patrick