【发布时间】:2011-11-07 00:33:20
【问题描述】:
如何在 Python 中转换和保存 16 位单通道 TIF?
我可以毫无问题地加载 16 位和 32 位图像,并且看到 32 位图像是模式 F,而 16 位图像是模式 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
【问题讨论】:
-
Pil 应该支持:effbot.org/zone/pil-changes-114.htm"(1.1.4a2 发布)改进了对 16 位无符号整数图像的支持(模式“I;16”)。这包括 TIFF 阅读器支持,以及对“getextrema”和“point”(来自 Klamer Shutte)。”你能提供一个示例文件吗?
-
好的。我正在使用 PIL 1.1.7,所以支持就在那里。编辑了问题。问题不是 PIL,但我仍然不知道我做错了什么......
-
仍然希望看到示例文件。