小编典典

Python和16位Tiff

python

如何在Python中转换和保存16位单通道TIF?

我可以加载没有问题的16位和32位图像,并看到32位图像是mode F,而16位图像是mode I;16S

import Image
i32 = Image.open('32.tif')
i16 = Image.open('16.tif')
i32
# <TiffImagePlugin.TiffImageFile image mode=F size=2000x1600 at 0x1098E5518>
i16
# <TiffImagePlugin.TiffImageFile image mode=I;16S size=2000x1600 at 0x1098B6DD0>

但是我在处理16位图像时遇到了麻烦。如果我想另存为PNG,则不能直接这样做:

i32.save('foo.png')
# IOError: cannot write mode F as PNG
i16.save('foo.png')
# ValueError: unrecognized mode

如果转换32位图像,则可以保存它:

i32.convert('L').save('foo.png')

但是相同的命令不适用于16位图像:

i16.convert('L').save('foo.png')
# ValueError: unrecognized mode

阅读 186

收藏
2020-12-20

共1个答案

小编典典

对于从16位灰度TIFF到PNG的无损转换,请使用PythonMagick

from PythonMagick import Image
Image('pinei_2002300_1525_modis_ch02.tif').write("foo.png")
2020-12-20