PIL: Bytearray in Image konvertieren

Ich versuche, einen Bytearray mit zu verifizierenImage.open undImage.verify() ohne es zuerst auf die Festplatte zu schreiben und dann mit zu öffnenim = Image.open(). Ich schaute auf die.readfrombuffer() und.readfromstring() Methode, aber da brauche ich die Größe des Bildes (die ich nur beim Konvertieren des Bytestreams in ein Bild bekommen konnte).

Meine Lese-Funktion sieht so aus:

def readimage(path):
    bytes = bytearray()
    count = os.stat(path).st_size / 2
    with open(path, "rb") as f:
        print "file opened"
        bytes = array('h')
        bytes.fromfile(f, count)
    return bytes

Als Basistest versuche ich dann, das Bytearray in ein Bild umzuwandeln:

bytes = readimage(path+extension)
im = Image.open(StringIO(bytes))
im.save(savepath)

Wenn jemand weiß, was ich falsch mache, oder wenn es eine elegantere Möglichkeit gibt, diese Bytes in ein Bild umzuwandeln, das mir wirklich helfen würde.

P.S .: Ich dachte, ich brauche das Bytearray, weil ich die Bytes manipuliere (sie sind fehlerhaft). Das hat funktioniert, aber ich wollte es tun, ohne es auf die Festplatte zu schreiben und dann die Image-Datei von der Festplatte erneut zu öffnen, um zu überprüfen, ob es kaputt ist oder nicht.

Bearbeiten: Alles, was es mir gibt, ist einIOError: cannot identify image file

Antworten auf die Frage(1)

Ihre Antwort auf die Frage