J'ai un code qui génère un cairo ceci ne fonctionne pas (les navigateurs signalent que l'image a des erreurs ). P> J'ai testé que aussi, est-il préférable de créer et de maintenir cette image en mémoire (comme j'essaye de le faire) ou d'écrire sur le disque comme un fichier temp et le servir à partir de là? J'ai seulement besoin de l'image une fois, alors il peut être jeté. p> p> imagesursurface code>, et je l'expose comme:
superfase.write_to_png ('test.png') code> fonctionne, mais je ne sais pas quoi jeter les données pour le renvoyer. Je suppose qu'un objet semblable à un fichier? Selon La documentation Pycairo ,
get_data () code> retourne un tampon. J'ai aussi maintenant essayé: p>
4 Réponses :
Avez-vous essayé retour str (surface.get_data ()) code>? p>
Essayez ceci pour l'approche 'Fichier dans la mémoire'
return StringIO.StringIO(surface.get_data())
ajoutez ces importations: puis va comme ceci: p> cherrypy.response.headers['Content-Disposition'] = 'attachment; filename="file.png"'
Fonctionne très bien! Pour la Bounty, pourriez-vous m'expliquer pourquoi?
Grande réponse, Zifot - Je pense que la clé utilise "write_to_png" qui convertit les données brutes au format PNG. Il suffit d'utiliser surface.get_data () ne fonctionnera pas car il n'est pas stocké en interne en tant que données PNG (c'est ARGB_32).
@Margr Novakowski - merci. Vous avez raison, ImageURFace contient des données en mémoire dans l'un des formats décrits ici: Cairographics.org/manual/... . Le format du fichier de sortie est une histoire différente.
@Colinmarc - Afaik Si vous questionne une prime a une prime, alors l'attribuant et accepte la réponse (qui sont maintenant des actions distinctes) sont possibles à peine deux jours après avoir créé une prime.
Merci un tas, j'étais vraiment coincé pendant un moment. =)
Vous échouez à cause de ne pas comprendre le fonctionnement de comme ceci: p> surface.get_data () code>.
Vous essayez de renvoyer le type de mime
image / png code> mais
surface.get_data () code> retours
image bitmap uni (N'EST PAS un fichier bitmap Windows .BMP avec en-tête) qui
est une seule image de l'image de "écran virtuel" (surface)
Que diriez-vous de
wreck_to_png_stream code>? Cairographics.org/documentation/cairograph/Reference/.../a>
Pycaiffe ne semble pas exposer cette méthode ... Cairographics.org/documentation/pycairs/2/2/Reference/...