Sto provando a verificare un bytearray con Image.open
e Image.verify()
senza scriverlo prima sul disco e quindi aprirlo con im = Image.open()
. Ho esaminato il metodo .readfrombuffer()
e .readfromstring()
, ma lì ho bisogno della dimensione dell'immagine (che ho potuto ottenere solo durante la conversione di bytestream in un'immagine).PIL: Converti Bytearray in Immagine
La mia lettura Funzione simile a questa:
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
Poi, come un test di base cerco di convertire il ByteArray a un'immagine:
bytes = readimage(path+extension)
im = Image.open(StringIO(bytes))
im.save(savepath)
Se qualcuno sa che cosa sto facendo male o se c'è un modo più elegante per convertire quei byte in un'immagine che mi aiuterebbe davvero.
P.S .: Ho pensato di aver bisogno del bytearray perché faccio delle manipolazioni sui byte (glittine le immagini). Questo ha funzionato, ma volevo farlo senza scriverlo sul disco e quindi aprire di nuovo il file immagine dal disco per verificare se fosse rotto o no.
Edit: Tutto ciò che dà me è un IOError: cannot identify image file
Perché non leggi l'immagine in serie numpy? –
@ViktorKerkez perché voglio manipolare i byte delle immagini. Ho un codice funzionante per la parte Manipulation, ma ora voglio verificare che l'immagine in uscita non sia completamente rotta. Quindi devo lavorare con le antenne – ato