PIL: Convertir Bytearray à l'Image
Je suis en train de vérifier un objet bytearray avec Image.open
et Image.verify()
sans l'écriture sur le disque en premier et ensuite l'ouvrir avec im = Image.open()
. J'ai regardé la .readfrombuffer()
et .readfromstring()
méthode, mais là, j'ai besoin de la taille de l'image (dont je n'ai pu avoir lors de la conversion de la bytestream à une image).
Ma Lecture de la Fonction ressemble à ceci:
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
Alors qu'une base de test, j'ai essayer de convertir l'objet bytearray à une image:
bytes = readimage(path+extension)
im = Image.open(StringIO(bytes))
im.save(savepath)
Si quelqu'un sait ce que je fais mal ou si il y a une façon plus élégante de convertir ces octets en une image que j'avais vraiment m'aider.
P. S.: j'ai pensé que j'ai besoin de l'objet bytearray parce que je ne les manipulations sur les octets (glitch des photos). Ce n'travail, mais je voulais le faire sans l'écrire sur le disque, puis en ouvrant le imagefile à partir du disque de nouveau pour vérifier si il est cassé ou non.
Edit: Tout ce qu'il me donne est un IOError: cannot identify image file
parce que je veux manipuler des Octets de l'image. J'ai du code qui fonctionne pour la Manipulation de la partie, mais maintenant, je veux vérifier l'image de sortie est en fait pas totalement rompu. J'ai donc pour travailler avec bytearrays
OriginalL'auteur ato | 2013-08-28
Vous devez vous connecter pour publier un commentaire.
Si vous manipulez avec
bytearrays
, alors vous devez utiliserio.BytesIO
. Aussi, vous pouvez lire directement un fichier sur unbytearray
.count
à tous?Parce que l'OP a fait la même chose dans sa question. 🙂 J'ai juste copier/coller le code et la correction de l'erreur.
Pourrait également être intéressant de souligner que
bytes
est un mot réservé en PythonOriginalL'auteur Viktor Kerkez