Я храню пиксели изображения в одной многопроцессорной обработке. Массив целых чисел, который можно индексировать как
self.data[x*height + y]
, поскольку это удобно использовать с IPC.
Я пытаюсь сохранить пиксели в файл, используя putdata () PIL, чтобы сделать это быстрее, чем используя 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](https://i.imgur.com/foi03.png)
Если я использую 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](https://i.imgur.com/7vhDu.png)