2012-01-27 18 views
2

我存儲在單個整數multiprocessing.Array可索引爲PIL的putdata需要哪種格式的數據?

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度轉動的圖像與很多重複。

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

回答

4

我想我看到你的第一個問題line:

self.data[x*height + y] 

圖像數據通常被組織周圍的其他方法:

self.data[y*width + x] 
+0

是的,這是它!謝謝! – juke 2012-01-27 15:35:44