我想用Python中的PIL創建一個48位(RGB)TIFF文件(每個通道16位)。然而,即使我已經找到了一種方法,以各個通道存儲爲16位,我不能管理這些合併成一個單一的48位RGB圖像:用PIL創建一個48位TIFF文件
In [3]: import numpy as np
In [4]: from PIL import Image
In [5]: r = np.array([[1,2],[3,4]], dtype=np.uint16)
In [6]: i = Image.fromarray(r, mode='I;16')
In [7]: Image.merge("RGB", (i,i,i))
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-7-35aa00ddbb2e> in <module>()
----> 1 Image.merge("RGB", (i,i,i))
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PIL/Image.pyc in merge(mode, bands)
2059 for im in bands[1:]:
2060 if im.mode != getmodetype(mode):
-> 2061 raise ValueError("mode mismatch")
2062 if im.size != bands[0].size:
2063 raise ValueError("size mismatch")
ValueError: mode mismatch
沒有人有怎樣的任何想法解決這個?或者我需要將頻道保存爲單獨的16位文件並將它們與不同的軟件結合使用?
請注意,PIL支持_importing_ 48位RGB,但在導入時將其轉換爲32位RGBA(請參見[Unpack.c]中的'unpackRGB16B'函數(http://svn.effbot.org/public /tags/pil-1.1.4/libImaging/Unpack.c))。 – abarnert
@abarnert謝謝,我補充說明答案 – jterrace