Python将32位转换为16位tiff

时间:2014-07-09 22:49:25

标签: python python-imaging-library tiff

有没有一种简单的方法可以将32位.tif转换为16位.tif?在IDL中,write_tiff允许/ short而不是/ float。 Python会这样做吗?相反,我试过这个:

i32 = Image.open('image.tif')
<Image.Image image mode=F size=2016x2016 at 0x102A3E998>
i32.convert('L').save('newimage.tif')

ImageJ(viewer)打开tif并说这个图像是8位,而不是16位。

2 个答案:

答案 0 :(得分:3)

来自PIL documentation'L'模式适用于8位灰度图像,原始图像是32位浮点(模式'F'),不是整数!要获得16位整数图像,您可以尝试使用'I;16'作为模式;这至少在我的Pillow 2.0.0(Ubuntu 14.04)中得到支持:

f32 = Image.open('image.tif')
f32.convert('I;16').save('newimage.tif')

答案 1 :(得分:1)

Python Imaging Library不支持16位像素深度。请参阅&#34;模式&#34;在手册的concepts section中。

衍生库Pillow的same goes

尝试例如ImageMagick(其中包含py bindings-depth选项。