Seite 1 von 1

Imageresizer vs. mein Bilderscript

Verfasst: 14.08.2006 13:06
von SKYSURFER2002
Hi,

ich habe für mich ein Script geschrieben, mit dem ich automatisch Bilder aus einem Verzeichnis ändere. Dies umfasst die Größe(Länge und Breite) und den Dateinamen. Leider bin ich mit der Qualität der geänderten Bilder nicht zufrieden. Hier mal der Code, der für das ändern der Größe zuständig ist:

Code: Alles auswählen

if(!@$bildspeichern = imagecreatetruecolor($endbreite,$endhoehe)) $bildspeichern = imagecreate($endbreite,$endhoehe);

      imagecopyresized($bildspeichern, $quellbild, 0, 0, 0, 0, $endbreite, $endhoehe, $orgbreite, $orghoehe);
      imagejpeg($bildspeichern, "$pfad");
      imagedestroy($bildspeichern);
Wie kann ich denn die Qualität beeinflussen? Mit dem Imageresizer ist die Qualität spürbar besser, obwohl die gleiche GD-Lib verwendet wird.
Gibt es da noch andere Befehle, welche ich nicht kenne?

Dann habe ich noch ein Problem. Das ganze wird in einer foreach-Schleife abgearbeitet. Ich habe da noch einen Zähler drinnen, der bei jedem durchlauf um 1 erhöht wird. Nun wie kann ich das machen, damit der Zähler Vornullen bekommt. Also z.B. 0001,0002,...,0010 anstelle von 1,2,3,...,10,...?!


Christian

Re: Imageresizer vs. mein Bilderscript

Verfasst: 14.08.2006 15:10
von FatFreddy
SKYSURFER2002 hat geschrieben:Wie kann ich denn die Qualität beeinflussen? Mit dem Imageresizer ist die Qualität spürbar besser, obwohl die gleiche GD-Lib verwendet wird.
Gibt es da noch andere Befehle, welche ich nicht kenne?
Verwende statt imagecopyresized() lieber die Funktion imagecopyresampled(). Damit solltest Du bessere Ergebnisse erzielen.

Wenn Du dem Link folgst, hast Du auch gleich eine Übersicht über alle Graphikfunktionen in PHP.

FatFreddy

Verfasst: 14.08.2006 15:30
von SKYSURFER2002
Vielen Dank,

das Ergebnis ist viel besser als vorher.


Nun habe ich nurnoch das problem mit dem Zähler. Gibt es da eine PHPfunktion, oder muss man sich sowas selber schreiben?


Christian

Verfasst: 14.08.2006 16:55
von FatFreddy
Brauchst Du den Zähler für den Dateinamen?

Dann pack ihn in einen String:

Code: Alles auswählen

$dateinamensteil = '000' . $DeinZähler;
FatFreddy

Verfasst: 14.08.2006 18:16
von Banger
FatFreddy hat geschrieben:

Code: Alles auswählen

$dateinamensteil = '000' . $DeinZähler;
Vierstellige Zahlen gehen aber auch eleganter:

Code: Alles auswählen

$dateinamensteil = str_pad($i, 4, 0, STR_PAD_LEFT);
:)

Verfasst: 14.08.2006 18:48
von SKYSURFER2002
Ja ich benötige das für einen Dateinamen.

leider verstehe ich nicht ganz, wie das angewandt wird. Hier mal ein Codeauszug:

Code: Alles auswählen

$count = 1; // mein zähler

foreach($fileArray as $datei) {
....
$bildspeichern = imagecreatetruecolor($endbreite, $endhoehe);
$quellbild = imagecreatefromjpeg($pfadbild);
imagecopyresampled($bildspeichern, $quellbild, 0, 0, 0, 0, $endbreite, $endhoehe, $orgbreite, $orghoehe);
imagejpeg($bildspeichern, "$pfad");
imagedestroy($bildspeichern);

$count++;

}
....
Könnte das mal bitte jemand einbauen?
Ich habe zusätzlich das Problem, dass ich mehr als 9 Dateien am Stück abarbeite und somit auch 2- bzw. 3-stellige Zahlen habe. Klappt das dann auch?

Danke,

Christian