J'ai généré une image à l'aide du DIP. Comment puis-je enregistrer une chaîne de caractères en mémoire?
L' Image.save()
méthode nécessite un fichier.
J'aimerais avoir plusieurs de ces images stockées dans le dictionnaire.
J'ai généré une image à l'aide du DIP. Comment puis-je enregistrer une chaîne de caractères en mémoire?
L' Image.save()
méthode nécessite un fichier.
J'aimerais avoir plusieurs de ces images stockées dans le dictionnaire.
Vous pouvez probablement utiliser la StringIO classe pour obtenir un wrapper autour de chaînes de caractères qui se comporte comme un fichier. Le StringIO objet fournit la même interface qu'un fichier, mais enregistre le contenu juste en mémoire:
import StringIO
output = StringIO.StringIO()
image.save(output)
contents = output.getvalue()
output.close()
Cela pourrait conduire à un KeyError
si PIL essaie de détecter automatiquement le format de sortie. Pour éviter ce problème, vous pouvez spécifier le format manuellement:
image.save(output, format="GIF")
sth solution ne fonctionne pas pour moi
parce que dans ...
Imagerie/PIL/Image.pyc ligne 1423 -> soulever KeyError(ext) # inconnu extension
Il a été d'essayer de détecter le format de l'extension dans le nom de fichier qui n'existe pas dans StringIO cas
Vous pouvez contourner la détection de format en définissant le format vous-même dans un paramètre
import StringIO
output = StringIO.StringIO()
format = 'PNG' # or 'JPEG' or whatever you want
image.save(output, format)
contents = output.getvalue()
output.close()
Quand vous dites "j'aimerais avoir le numéro de tel des images stockées dans un dictionnaire", il n'est pas clair si c'est une structure en mémoire ou non.
Vous n'avez pas besoin de faire tout cela à meek une image dans la mémoire. Il suffit de garder à l' image
objet dans votre dictionnaire.
Si vous allez écrire votre dictionnaire dans un fichier, vous voudrez peut-être regarder à l' im.tostring()
méthode et l' Image.fromstring()
fonction
http://effbot.org/imagingbook/image.htm
im.tostring() => string
Renvoie une chaîne contenant le pixel de données, en utilisant la norme "raw" codeur.
Image.fromstring(mode, la taille des données) => image
Crée une image de la mémoire de pixel des données dans une chaîne, à l'aide de la norme "raw" décodeur.
Le "format" (.jpeg, de .png, etc.) seules les questions sur le disque lorsque vous échangez des fichiers. Si vous n'êtes pas l'échange de fichiers, le format n'a pas d'importance.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.