2009-06-09 5 views
1

Wenn ich Bilddaten über WSGI (unter Verwendung wsgiref) sende, ist das Bild oft verzerrt. Als Beispiel untersuchen die folgenden:Bildverzerrung nach dem Senden durch eine WSGI App in Python

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

+0

Sieht aus wie ein "Binär versus Text" -Problem - \ n wird in \ r \ n oder umgekehrt übersetzt, oder ein Control-Z kommt in die Quere. Ich habe solche Probleme nie selbst beobachtet, aber ich benutze Windows heutzutage kaum (und bei jedem anderen System spielt es keine Rolle, ob ich schlampig mit meinem 'r' vs 'rb' aufhöre ;-). Möchten Sie die fraglichen Plattformen erklären und uns den entsprechenden Code zeigen? –

+0

Ich mache das auf Ubuntu Linux. Und es gibt wirklich keinen Code, um zu zeigen. Alles, was passiert, ist, dass ich eine Bilddatei lese und sie an den WSGI-Server sende. –

+1

Senden wie? Alex hat Recht. Ich habe gesehen, dass genau dieses Problem passiert, wenn ein Teil des Stapels ein Byte konvertiert hat, das wie \ n \ n in einem .jpg –

Antwort

1

Es hatte mit \n nicht richtig konvertiert werden. Ich möchte Alex Martelli dafür danken, dass er mich in die richtige Richtung geführt hat.

0

Vielleicht ist das Ergebnis abgeschnitten zu werden? Versuchen Sie wget oder curl, um die Datei direkt und cmp es zum ursprünglichen Bild zu holen; das sollte helfen, es zu debuggen. Darüber hinaus können Sie Ihre vollständigen Code- und Umgebungsdetails veröffentlichen, auch wenn es einfach ist.

3

Wie Sie den Code geschrieben haben, hier ist ein einfacher Code, der richtig mit Python 2.5 auf 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() 

sein kann anstelle von "rb" arbeitet Sie mit "r"