【问题标题】:In which format does PIL's putdata need the data to be?PIL 的 putdata 需要采用哪种格式的数据?
【发布时间】:2012-01-27 23:27:33
【问题描述】:

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

self.data[x*height + y]

因为这很方便与 IPC 一起使用。

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

我认为 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 度旋转的图像,并且有很多重复。

如果我像这样使用 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]

它产生

【问题讨论】:

    标签: python python-imaging-library


    【解决方案1】:

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

    self.data[x*height + y]
    

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

    self.data[y*width + x]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-13
      • 2018-11-17
      • 2014-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-31
      相关资源
      最近更新 更多