PIL thumbnail

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Syber
User
Beiträge: 10
Registriert: Donnerstag 25. März 2004, 11:28

Hallo
habe ein kleines Problem das ist ein Teil meines codes:

Code: Alles auswählen

import Image

size = 128, 128

for datei in verzeichnisinhalt:

     if datei[-4:] == '.jpg': 
          try:
             im = Image.open(datei)
             im.thumbnail(size)
             im.save(outfile,"JPEG")
             htmltext = htmltext + '<li>' + '<a href="' + '/' +datei + '">' + '<img src="' + outfile + '" border=0></img></a>' + '<b>Bildername:</b> ' + datei +  "</li>\n <hr>"
             print datei

          except IOError:
             print "cannot create thumbnail for", datei

aber er macht immer fehler ;/
Soll die thumbnails von den Bildern im Ordner machen.


Wo dran kann es liegen ?
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi Syber,

was heisst
aber er macht immer fehler ;/
:?:

was mir gleich auffällt ist daß du bei

Code: Alles auswählen

htmltext = htmltext + '<li>' + '<a href="' + '/' +datei + '">' + '<img src="' + outfile + '" border=0></img></a>' + '<b>Bildername:</b> ' + datei +  "</li>\n <hr>"
outfile und datei versuchst mit Strings zu verbinden. Ich gehe davon aus, daß es sich dabei um Dateien handelt. Um den Dateinamen zu erhalten, den du dann in den String reinkopieren kannst, verwende outfile.name und datei.name.


Gruß

Dookie
Syber
User
Beiträge: 10
Registriert: Donnerstag 25. März 2004, 11:28

hmm ja das habe ich noch nicht angepasst.
Das weiss ich auch wie das später geht nur
der macht immer diese IO fehlermeldung
und dann :
cannot create thumbnail for 00183_f_f.jpg
cannot create thumbnail for 00177_f_f.jpg
cannot create thumbnail for 00191_f_f.jpg
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi Syber,
der macht immer diese IO fehlermeldung
:?: :?: :?:

Sorry, aber meine Glaskugel ist leider in reparatur.
Ich empfehle Dir mal http://python.sandtner.net/viewtopic.php?t=1240 durchzulesen. Besonders die Punkte b3 und b4


Gruß

Dookie
Syber
User
Beiträge: 10
Registriert: Donnerstag 25. März 2004, 11:28

hab ich doch hmm
hab dir mal nen code per PN geschickt sonst is es zu viel gespamme.

schau selbst KA wie ich es besser beschreiben soll
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

na welche IO-Fehlermeldung kommt denn?
Ich tippe da auf ein Rechteproblem, daß dein Script nicht in das Verzeichnis schreiben darf wo du die Thumbnails ablegst. Um da näheres zu sagen müsste man aber schon die Fehlermeldung wissen und welches OS.

[sakrasmusmode]
oder ist der Schreibschutz der Diskette aktiviert, oder hast Du vergessen eine Diskette einzulegen, bei windows bekam ich da mal die Meldung "Diskette voll" weil der Schreibschutz aktiviert war *ggg*
Den Monitor hast Du aber schon eingeschaltet, oder kommt die IO-Fehlermeldungen in Form eines Piepsens aus dem PC-Lautsprecher?
Dann bitte die Tonfolge in Punkten und Strichen posten.
[/sakrasmusmode]


Dookie
Syber
User
Beiträge: 10
Registriert: Donnerstag 25. März 2004, 11:28

MAC OS X habe ich drauf
Rechte habe ich gesetzt einzeln geht das script bei mir

Code: Alles auswählen

import os, sys
import Image

size = 128, 128

for infile in sys.argv[1:]:
    outfile = os.path.splitext(infile)[0] + ".thumbnail"
    if infile != outfile:
        try:
            im = Image.open(infile)
            im.thumbnail(size)
            im.save(outfile, "JPEG")
        except IOError:
            print "cannot create thumbnail for", infile
Voll kann auch nicht ist normal alles richtig weil es ja mit dem Code von hier ja einzeln geht ;/
teste mal bitte den in der PN
genaue fehlermeldung kann ich nicht sagen weil ich keine bekomme.
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

ok, habs mal probiert.
Tja, wenn man die Fehler mit try: except: abfängt und die Message nicht ausgibt, gibts natürlich keine Fehlermeldungen
Ändere mal den Teil in:

Code: Alles auswählen

for dateiname in verzeichnisinhalt:

       if dateiname[-4:] == '.jpg':
          try:
             im = Image.open(dateiname)
             im.thumbnail(size)
             im.save(thumbname,"JPEG")
             htmltext = htmltext + '<li>' + '<a href="' + '/' +dateiname + '">' + '<img src="' + thumbname + '" border=0></img></a>' + '<b>Bildername:</b> ' + dateiname +  "</li>\n <hr>"
             print dateiname

          except IOError, msg:
             print "cannot create thumbnail for", dateiname
             print msg
um, dann gibts schonmal die Message vom IOError aus und stösst dich sicher mit der Nase auf den Fehler. Oder lass das try: except: gleich weg.


Gruß

Dookie

PS: ich liess meine VIM das "datei" durch "dateiname" und das "outfile" durch "thumbname" ersetzen.
Syber
User
Beiträge: 10
Registriert: Donnerstag 25. März 2004, 11:28

ok danke aber nun noch nen fehler ;/

Code: Alles auswählen

for dateiname in verzeichnisinhalt:

          
        if dateiname[-4:] == '.jpg':
          try:
             im = Image.open(verzeichnisname + '/' + dateiname)
             im.thumbnail(size)
             im.save(thumbname,"JPEG")
             htmltext = htmltext + '<li>' + '<a href="' + '/' +dateiname + '">' + '<img src="' + thumbname + '" border=0></img></a>' + '<b>Bildername:</b> ' + dateiname +  "</li>\n <hr>"
             print dateiname

          except IOError, msg:
             print "cannot create thumbnail for", dateiname
             print msg 

hab nun das gemacht : im = Image.open(verzeichnisname + '/' + dateiname)

aber fehler :
Traceback (most recent call last):
File "test4.py", line 38, in ?
im.save(thumbname,"JPEG")
NameError: name 'thumbname' is not defined

aber wnen ich das mache :
thumbname = os.path.splitext(dateiname)[0] + ".thumbnail"

geht das auch nicht
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

lass in deinem Code alle "datei" durch "dateiname" ersetzen und alle "outfile" durch "thumbname", das sollte jeder Texteditor können.
Desweiteren verbindet man Dateinamen mit os.path.join(verzeichnisname, dateiname), der mac verwendet doch ":" als pfadtrennzeichen oder?


Gruß

Dookie
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo Syber

Kannst Du einmal den folgenden Code mit
Deinem JPG-Bild ausprobieren.

Die Anweisungen für eine Änderung der Bildgrösse
ist im Code noch ausdokumentiert!

Wie sieht das Resultat auf Deinem PC aus?

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import Image
from   Tkinter    import*
from   ImageTk    import*


root = Tk()
canvas = Canvas(root)
canvas.pack()

myimage   = Image.open('MeinBildchen.jpg')

# imagesize = 60,87
# myimage   = myimage.resize(imagesize)

print 'Bildformat = ',myimage.format
print 'Bildgrösse = ',myimage.size
print 'Farbmodus  = ',myimage.mode

#~~ Konvertiert das JPG-Bild in Tk verdaubares Format
tkimage = PhotoImage(myimage)

#~~ Legt das JPG-Bild auf die Canvas (mit Offset x=10 und y=10
canvas.create_image(10,10,anchor='nw',image=tkimage)

root.mainloop()
Gruss wuf :wink:
Take it easy Mates!
Syber
User
Beiträge: 10
Registriert: Donnerstag 25. März 2004, 11:28

: ?? ne bei mir geht das mit / ...
Tkinter habe ich nicht das geht nicht :(
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi Syber,

hast Du meine PM vom letzten Donnerstag bekommen?


Gruß

Dookie
Syber
User
Beiträge: 10
Registriert: Donnerstag 25. März 2004, 11:28

ups Übersehen :P
Habs getestet und es geht Danke :)
Antworten