2009-06-09 8 views
1

La plupart du temps lorsque j'envoie des données d'image via WSGI (en utilisant wsgiref), l'image est déformée. À titre d'exemple, examiner les points suivants:Distorsion de l'image après l'envoi via une application WSGI en Python

distorted Google logo http://evanfosmark.com/files/goog.gif

+0

Cela ressemble à un problème "binaire contre texte" - \ n se traduit par \ r \ n ou viceversa, ou un contrôle-Z gênant. Je n'ai jamais observé de tels problèmes moi-même, mais ensuite, je n'utilise guère Windows de nos jours (et sur n'importe quel autre système, peu importe si je suis bâclé avec mon 'r' vs 'rb' ouvre ;-). Vous voulez expliquer les plates-formes en question et nous montrer le code pertinent? –

+0

Je le fais sous Linux Ubuntu. Et il n'y a vraiment pas de code à montrer. Tout ce qui se passe est que je suis en train de lire un fichier image et de l'envoyer au serveur WSGI. –

+1

L'envoyer comment? Alex a raison. J'ai vu ce problème exact se produire quand un morceau de la pile a converti un octet qui ressemblait à \ n \ n \ n \ ndans un fichier .jpg –

Répondre

1

Il avait à faire avec \n ne pas être converti correctement. Je voudrais remercier Alex Martelli de m'avoir indiqué la bonne direction.

0

Peut-être que le résultat est tronqué se? Essayez ou curl pour récupérer le fichier directement et cmp pour l'image d'origine; cela devrait aider à le déboguer. Au-delà de cela, postez votre code complet et les détails de l'environnement, même si c'est simple.

3

Comme vous ne l'avez pas affiché le code, voici un code simple qui fonctionne correctement avec python 2.5 sur Windows

from wsgiref.simple_server import make_server 

def serveImage(environ, start_response): 
    status = '200 OK' 
    headers = [('Content-type', 'image/png')] 
    start_response(status, headers) 

    return open("about.png", "rb").read() 

httpd = make_server('', 8000, serveImage) 
httpd.serve_forever() 

peut être au lieu de "rb" vous utilisez "r"