PIL的putdata以哪种格式需要数据?

时间:2012-01-27 15:21:30

标签: python python-imaging-library

我将图像的像素存储在单个多处理中。整数的阵列可以被索引为

self.data[x*height + y]

因为这对IPC使用很方便。

我正在尝试使用PIL的putdata()将像素保存到文件中,以使其比使用putpixel()或[]索引更快。但是我无法弄清楚putdata()想要imagedata的格式。

我认为相同类型的索引可以与putdata()

一起使用
def write(self):
    im = Image.new("RGB", (self.width, self.height))
    imagedata = [self.intToRGB(self.data[i*self.height + j]) 
                     for i in range(self.width) 
                        for j in range(self.height)]
    im.putdata(imagedata)
    im.save(self.filename, "PNG")

self.intToRGB()返回一个元组(r,g,b)。

但是上面的代码会导致-90度变成重复的图像。

crooked

如果我使用putpixel()而不是像这样的putdata():

    pic = im.load()
    for i in range(self.width):
        offset = i * self.height
        for j in range(self.height):
            pic[i, j] =  imagedata[i * self.height + j]

它产生

this

1 个答案:

答案 0 :(得分:4)

我想我在第一行看到了问题:

self.data[x*height + y]

图像数据通常以相反的方式组织:

self.data[y*width + x]