擅长:python、mysql、java
<p>无意中发现这个线程试图用PIL/numpy保存16位TIFF图像。</p>
<p>版本:python 2.7.1-numpy 1.6.1-pil1.1.7</p>
<p>这是我写的一个快速测试。uint16 numpy数组->;转换为字符串->;转换为类型为“I;16”的PIL图像->;另存为16位TIFF。</p>
<p>在ImageJ中打开图像显示右水平渐变图案,图像类型为“每像素位数:16(无符号)”</p>
<pre><code>import Image
import numpy
data = numpy.zeros((1024,1024),numpy.uint16)
h,w = data.shape
for i in range(h):
data[i,:] = numpy.arange(w)
im = Image.fromstring('I;16',(w,h),data.tostring())
im.save('test_16bit.tif')
</code></pre>
<p><strong>编辑:</strong>从1.1.7开始,PIL不支持写入压缩文件,但<a href="http://code.google.com/p/pylibtiff/">pylibtiff</a>支持(lzw压缩)。因此,测试代码变为(使用pylibtiff 0.3测试):</p>
<pre><code>import Image
import numpy
from libtiff import TIFFimage
data = numpy.zeros((1024,1024),numpy.uint16)
h,w = data.shape
for i in range(w):
data[:,i] = numpy.arange(h)
tiff = TIFFimage(data, description='')
tiff.write_file('test_16bit.tif', compression='lzw')
#flush the file to disk:
del tiff
</code></pre>
<p>请注意:测试代码已更改为生成垂直渐变,否则无法实现压缩(请参阅警告:pylibtiff当前支持读取和写入使用TIFF条存储的图像)。</p>