使用Pillow在Python中将Array转换为Image(tif)

时间:2014-12-05 18:16:53

标签: python arrays python-imaging-library pillow

我正在尝试将array转换为图像( tif )以进行压缩(它将在另一端撤消)。但是,我正陷入第一道障碍......

我有以下内容:

pillow_image = Image.fromarray(image_data)

这给了我这个错误:

  File "/Users/workspace/test-app/env/lib/python2.7/site-packages/PIL/Image.py",
     

第2155行,在fromarray           arr = obj。 array_interface       AttributeError:'tuple'对象没有属性' array_interface '

我在这里做错了什么?

1 个答案:

答案 0 :(得分:3)

image_data是4个numpy数组的元组,每个(可能)形状(H,W)。您 需要image_data是一个单一的形状数组(H,W,4)。因此,使用np.dstack来组合频道。

至少有一个数组的dtype为int32。但要将其用作8位颜色通道,数组必须为dtype uint8(因此最大值为255)。您可以使用uint8将数组转换为dtype astype。希望您的数据不包含大于255的值。如果是,astype('uint8')将仅保留最低有效位(即返回模数为256的数字)。

image_data = np.dstack(image_data).astype('uint8')
pillow_image = Image.fromarray(image_data)