Marc Reichelt: Probleme mit Thumbnail-Erstellung (GD)

Beitrag lesen

Hallo Fabian,
ich versuche nun doch mal ein wenig, deinen Code auseinanderzunehmen.
Hatte selbst mal probiert via PHP Thumbnails zu erstellen, es hat auch geklappt - wenn auch schlecht, weshalb ich heute ImageMagick verwende.
Nun aber zu deinem Problem:

Ich bin gerade dabei, meine ersten Gehversuche mit der GD-Library von PHP zu machen. Da ich mich mit den ganzen Grafikfunktionen - wie gesagt - noch nicht auskenne, habe ich nach solchen Thumbnail-Scripte gesucht und versucht ihre Funktionsweise zu verstehen. Leider klappt dabei nicht alles wie gewünscht.

In einem Verzeichnis befinden sich ca. 100 800x600px große Bilder im JPG-Format. Dies werden von einem Skript ausgelesen und der Dateiname in einem numerisch-indizierten Array gespeichert. Anschließend wird dieses Array von einer foreach-Schleife durchlaufen und es soll bei jedem Schleifendurchlauf _dynamisch_ ein Thumbnail erstellt werden, das jedoch sofort nach der Ausgabe wieder gelöscht wird. Das Problem nun ist, dass

a) einerseits die Qualität der Thumbnails bescheiden ist, d.h. meist schwarz-weiß; Beispiel: http://klasse10a.fabis-site.net/

Die Qualität von verkleinerten Bildern unter GD-Library ist meist sehr schlecht, dass einige Bilder schwarz-weiß erscheinen habe ich aber noch nicht erlebt.
Vielleicht stellst du auch mal die Bilder in Originalgröße online, zum Vergleichen?

b) ich nicht genau weiß, wie ich es am besten anstellen soll, die Thumbnails nach der Ausgabe zu löschen

Ich hätte ein PHP-Skript erstellt, dass später als Bild eingebunden wird.
Dieses nimmt das Originalbild, verkleinert es und gibt es als Bild an den Browser aus (fpassthru()-Funktion). Da kommt man auch nicht in die Problemsituation, die du jetzt hast - das ist nämlich nicht möglich, denn dazu müsstest du über PHP feststellen dass das Bild vom Browser geladen wurde.

c) ich nicht ganz hinter den Sinn des Codes blicke :-(

Der Code zur Erstellung der Thumbnails lässt sich hier finden. Ich würde mich freuen, wenn mir jemand die obigen Fragen beantworten könnte und was es mit den Funktionen ImageCreateFromJPEG, ImageJPEG, ImageCreate auf sich hat. Ich habe sie zwar bereits in php.net nachgeschlagen, jedoch verstehe ich z.B. den Sinn nicht, warum man mit ImageCreateFromJPEG ein neues Bild im JPEG-Format erstellen soll, obwohl man es bereits vorliegen hat?!

Soweit ich noch von damals weiß kann man mit der GD-Library nur Bilder einer festen Größe anlegen, verändern kann man die gesamte Bildgröße nicht.
Mit der Funktion ImageCopyResized kann man zumindest einen Bildausschnitt (hier das gesamte Bild) kopieren und in einem anderen Bild mit anderer Größe ablegen (das via ImageCreate erstellt wurde).
Sinnvoll wäre es wirklich, wenn die GD-Library eine Funktion zur Größenveränderung des gesamten Bildes gäbe - gibt es aber AFAIK nicht.
Mittels der Funktion ImageJPEG wird das Bild dann als Datei auf die Platte geschrieben.

So verstanden? Dann weißt du jetzt sicher auch warum ich am Liebsten ImageMagick verwende... ;-)

Marc Reichelt || http://www.marcreichelt.de/

--
Linux is like a wigwam - no windows, no gates and an Apache inside!
SELFCode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
http://emmanuel.dammerer.at/selfcode.html