のモードが必要です"L;16"
。ただし"L"
、PGM をロードするときに、PIL には File.c にハードコードされたモードがあるようです。16 ビット PGM を読み取れるようにするには、独自のデコーダーを作成する必要があります。
ただし、16 ビット イメージのサポートはまだ不安定なようです。
>>> im = Image.fromstring('I;16', (16, 16), '\xCA\xFE' * 256, 'raw', 'I;16')
>>> im.getcolors()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/dist-packages/PIL/Image.py", line 866, in getcolors
return self.im.getcolors(maxcolors)
ValueError: image has wrong mode
PIL は 16 ビットで画像を読み取ることができると思いますが、実際に画像を保存して操作するのはまだ実験段階です。
>>> im = Image.fromstring('L', (16, 16), '\xCA\xFE' * 256, 'raw', 'L;16')
>>> im
<Image.Image image mode=L size=16x16 at 0x27B4440>
>>> im.getcolors()
[(256, 254)]
0xCAFE
値を と解釈しただけで、0xFE
正確には正しくありません。