Как преобразовать и сохранить 16-битный одноканальный TIF в Python?
Я могу загружать 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