PIL --> FTP Upload

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ich nehme mit dem Kameramodul ein Bild als Stream auf, und bearbeite es anschließend mit PIL.
    Danach kann ich es erfolgreich als JPEG abspeichern.
    Jetzt möchte ich es aber eigentlich gar nicht abspeichern, sondern direkt per FTP auf meinen Webspace laden.

    Dazu habe ich folgenden Code gefunden:
    http://stackoverflow.com/questions/1571…o-an-ftp-server

    Code
    import StringIO
    f = StringIO()
    image.save(f, 'PNG')
    
    
    f.seek(0) # return the StringIO's file pointer to the beginning of the file
    
    
    # again this assumes you already connected and logged in
    ftp.storbinary("STOR remote_filename.png", f)

    Da ich Python 3 verwende, lief das Script so nicht, so dass ich es leicht angepasst habe.
    Hier ist mein Code:

    Code
    img_web.seek(0)
    ]temp = io.StringIO() # this is a file object
    img_web.save(temp, format='png') # save the content to temp
    temp.seek(0)
    session.storbinary('STOR /home/www/test.png' , temp)

    Leider funktioniert das bei mir nicht. Ich bekomme folgende Fehlermeldung angezeigt:

    Code
    img_web.save(temp, format='png') # save the content to temp
     File "/usr/lib/python3/dist-packages/PIL/Image.py", line 1685, in save
       save_handler(self, fp, filename)
     File "/usr/lib/python3/dist-packages/PIL/PngImagePlugin.py", line 657, in _save
       fp.write(_MAGIC)
    TypeError: string argument expected, got 'bytes'

    Wer kann mir da einen Tip geben?

    Einmal editiert, zuletzt von schousda (25. Januar 2016 um 21:33)

  • Hallo,

    eigentlich ist die Fehlermeldung ja eindeutig: der Befehlsaufruf erwarten eine Objekt vom Typ `String, die lieferst aber `Bytes`. In der geposteten Fehlermeldung fehlt die Angabe der Zeilennummer, aber im kompletten Stacktrace, den du bei dir auf dem Rechner erhältst, sollte die drin stehen. Da musst du dann mal ansetzen.

    Gruß, noisefloor

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!