Ich muss ein transparentes Bild speichern, das aus einem numply-Array besteht. Ich kann das Bild speichern mit:Speichern von RGBA-Bildern mit PIL.Image.frombuffer()
img = Image.fromarray(data, 'RGB')
Aber ich muss es transparent sein, so habe ich versucht, es zu retten mit:
img = Image.fromarray(data, 'RGBA')
Dann bekomme ich diesen Fehler:
File "/home/pi/Documents/Projet/GetPos.py", line 51, in click
img = Image.fromarray(data, 'RGBA')
File "/usr/lib/python2.7/dist-packages/PIL/Image.py", line 2217, in
fromarray
return frombuffer(mode, size, obj, "raw", rawmode, 0, 1)
File "/usr/lib/python2.7/dist-packages/PIL/Image.py", line 2162, in
frombuffer
core.map_buffer(data, size, decoder_name, None, 0, args)
ValueError: buffer is not large enough
I habe etwas recherchiert, aber alles sieht sehr kompliziert für die einfache Sache aus, die ich versuche ... Kann mir jemand dabei helfen?
Hier ist mein kompletter Code (ich Python ziemlich neu bin :)):
mouse = pymouse.PyMouse()
posX, posY = mouse.position()
print(mouse.position())
w, h = 1920, 1080
data = np.zeros((h, w, 3), dtype=np.uint8)
for x in range(posX-20, posX+20):
if x > 1679:
data[posY, w-1] = [255, 0, 0]
else:
data[posY, x] = [255, 0, 0]
for y in range(posY-20, posY+20):
if y > 1049:
data[h-1, posX] = [255, 0, 0]
else:
data[y, posX] = [255, 0, 0]
img = Image.fromarray(data, 'RGBA')
##img = Image.frombuffer('RGBA', [1080, 1920], data, "raw", 'RGBA', 0, 1)
img.save('my.png')