Python将32位转换为16位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(一个查看器)打开这个tif文件后说,这张图片是8位的,而不是16位的。
2 个回答
1
Python图像库不支持16位的像素深度。你可以在手册的概念部分查看“模式”相关的信息。
派生库Pillow也是一样的情况,具体可以参考这个链接。
你可以试试ImageMagick,它有Python的接口,并且可以使用-depth
这个选项。
3
来自 PIL 文档:'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')