Python PIL-Image.tostring()
Ich bin neu in Python und PIL. Ich bin versucht zu Folgen, code-Beispiele, wie ein Bild geladen werden, um Python durch PIL und dann ziehen seine Pixel mit openGL. Hier sind einige Codezeile:
from Image import *
im = open("gloves200.bmp")
pBits = im.convert('RGBA').tostring()
.....
glDrawPixels(200, 200, GL_RGBA, GL_UNSIGNED_BYTE, pBits)
Zieht sich ein 200 x 200 patch der Pixel auf die Leinwand. Es ist jedoch nicht das gewünschte Bild-es sieht aus wie es ist das zeichnen von Pixeln aus dem random-Speicher. Die random-Speicher-Hypothese wird unterstützt durch die Tatsache, dass ich das gleiche Muster, auch wenn ich Versuch zu zeichnen ganz unterschiedliche Bilder.Kann mir jemand helfen? Ich bin mit Python 2.7 und 2.7 version von pyopenGL und PIL unter Windows XP.
InformationsquelleAutor ahoffer | 2011-07-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, Sie waren in der Nähe. Versuchen:
Zuerst das Bild umgewandelt werden RGBA-Modus, um für die RGBA-rawmode packer verfügbar sein (siehe Pack.c in libimaging). Sie können überprüfen, dass
len(pBits) == im.size[0]*im.size[1]*4
, die 200x200x4 = 160,000 bytes für Ihre gloves200 Bild.InformationsquelleAutor eryksun
Haben Sie versucht, mit der Umstellung innerhalb der tostring-Funktion direkt?
Nutzen Sie alternativ Kompatibilität version:
Fügte einen workaround gefunden auf java2s.com/Open-Source/Python/GUI/Python-Image-Library/... zu meinem snippet oben
Danke für den work around. Was ist das Kompatibilitätsproblem. War ich, die alte Beispiel-code auf die neuere version der Bibliothek?
InformationsquelleAutor mikebabcock
Danke für die Hilfe. Dank mikebabcock für die Aktualisierung der Beispiel-code auf dem Web. Dank eryksun für das code-snippet-- ich habe es in meinem code.
Ich habe meine Fehler und es war Python newb Fehler. Autsch. Als ich erklärte, dass einige Variablen, die außerhalb jeder Funktion in das Modul und naiv dachte ich, war die änderung Ihrer Werte innerhalb einer Funktion. Natürlich klappt das nicht und so ist meine glDrawPixels Anruf war in der Tat die Zeichnung gelegentliches Gedächtnis.
InformationsquelleAutor ahoffer