2012-09-25 2 views
0

J'utilise Canvas (et Python 2.7) pour afficher une image qui est stockée dans un bytearray (au format PGM).Utilisation d'une image non enregistrée dans un canevas

Pour l'instant, je l'enregistre sur le disque, puis construis une image à partir du fichier.

Comment puis-je éviter d'enregistrer le fichier? J'ai essayé d'utiliser cStringIO pour faire une « chaîne de fichier », en passant ensuite à l'aide de PhotoImage encode64, le problème est que cStringIO.write n'accepte pas bytearray: J'ai une erreur:

TypeError: must be string or pinned buffer, not bytearray 

Je voudrais éviter d'utiliser des bibliothèques externes, telles que PIL, si possible.

Merci à l'avance,

Fred

Répondre

0

D'après ce que je vois la suggestion avec PhotoImage est:

Le PhotoImage peut également lire les fichiers GIF codé en base64 de chaînes. Vous pouvez l'utiliser pour intégrer des images dans le code source Python (utilisation des fonctions dans le module base64 pour convertir des données binaires à des chaînes codées en base64-)

Vous pouvez convertir le tableau d'octets à une chaîne: byteString = ''.join([ str(x) for x in bytes ]) Voir si cela marche.

Link to base64 module

+0

Je n'ai pas remarqué que PhotoImage ne pouvait prendre des chaînes codées GIF. Je pensais que cela fonctionnerait avec n'importe quel format que PhotoImage peut lire comme un fichier. Je pense que je n'ai pas d'autre choix que d'utiliser PIL. Merci d'avoir signalé mon erreur. – Fred

Questions connexes