Seite 1 von 1
PIL thumbnail
Verfasst: Donnerstag 25. März 2004, 11:30
von Syber
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 ?
Verfasst: Donnerstag 25. März 2004, 14:20
von Dookie
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
Verfasst: Donnerstag 25. März 2004, 14:25
von Syber
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
Verfasst: Donnerstag 25. März 2004, 15:15
von Dookie
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
Verfasst: Donnerstag 25. März 2004, 15:19
von Syber
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
Verfasst: Donnerstag 25. März 2004, 15:34
von Dookie
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
Verfasst: Donnerstag 25. März 2004, 15:39
von Syber
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.
Verfasst: Donnerstag 25. März 2004, 16:20
von Dookie
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.
Verfasst: Donnerstag 25. März 2004, 16:33
von Syber
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
Verfasst: Donnerstag 25. März 2004, 16:43
von Dookie
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
Verfasst: Donnerstag 25. März 2004, 18:11
von wuf
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
Verfasst: Montag 29. März 2004, 09:50
von Syber
: ?? ne bei mir geht das mit / ...
Tkinter habe ich nicht das geht nicht
Verfasst: Montag 29. März 2004, 11:28
von Dookie
Hi Syber,
hast Du meine PM vom letzten Donnerstag bekommen?
Gruß
Dookie
Verfasst: Montag 29. März 2004, 14:28
von Syber
ups Übersehen
Habs getestet und es geht Danke