我使用的是Python 3.6和Pillow 4.0.0
我正在尝试从值数组中创建PIL图像,请参阅下面的简化代码,我在调用AttributeError: 'array.array' object has no attribute '__array_interface__'
函数时收到以下错误:Image.fromarray()
。
为什么会这样? 当PIL文档说: 从导出阵列接口的对象创建映像内存(使用缓冲区协议)。 和array.array文档说: 数组对象也实现缓冲区接口,并且可以在支持类似字节的对象的任何地方使用......
from PIL import Image
from array import array
arr = array('B', [100, 150, 200, 250])
im = Image.fromarray(arr)
im.show()
答案 0 :(得分:2)
数组接口是NumPy概念:ref。换句话说,Image.fromarray
只能在numpy数组上运行,而不能在标准Python库array.array
上运行。
答案 1 :(得分:0)
您必须使用array interface
(using the buffer protocol),试试这个:
from PIL import Image
import numpy as np
w, h = 512, 512
data = np.zeros((h, w, 4), dtype=np.uint8)
for i in range(w):
for j in range(h):
data[i][j] = [100, 150, 200, 250]
img = Image.fromarray(data, 'RGB')
img.show()