Thumbnail erstellen

Moin…

also ich hab auf meiner Page ein Fotoalbum gemacht und für manche User die Möglichkeit eingerichtet ein Bild hochzuladen.
Von allen hochgeladenen Bildern soll sogleich auch ein Thumbnail mit dem prefix „t_“ erstellt und im gleichen Ordner gespeichert werden.
Soweit sogut, das hab ich ja eigentlich noch hingebkommen, aber alle meine Thumbnails sind eigentlich nur schwarz :\
Größe, Auslösung und Dateiname stimmen, nur der Inhalt geht verloren, kann mir da vllt einer helfen?

$uploaddir --> Das Verzeichniss wo die Dateiein gepeichert werden sollen
$Photo --> Dateiname ohne .jpg

if(move\_uploaded\_file($\_FILES['userfile']['tmp\_name'],$uploaddir.$Photo.".jpg"))
{
 chmod($uploaddir.$Photo.".jpg",0755);
 chown($uploaddir.$Photo.".jpg","au000146");

 $thumb1 = imagecreatefromjpeg($uploaddir.$Photo.".jpg"); //erstellt ein Abbild im Speicher
 $Orgsize=getimagesize($uploaddir.$Photo.".jpg"); //ermittelt die Groesse des Bildes

 $OrgBreite=$Orgsize[0]; //die Breite des Bildes
 $OrgHoehe=$Orgsize[1]; //die Höhe des Bildes

 $NeuBreite = floor($OrgBreite / floor($OrgBreite / 100)); //die breite des Thumbnails
 $NeuHoehe= floor($OrgHoehe / floor($OrgBreite / 100)); //die Höhe des Thumbnails

 $thumb2=imagecreate($NeuBreite,$NeuHoehe); //Thumbnail im Speicher erstellen

 imagecopyresized($thumb2,$thumb1,0,0,$OrgBreite,$OrgHoehe,0,0,$NeuBreite,$NeuHoehe); //Bild in Thumbnail kopieren

 imagejpeg($thumb2,$uploaddir."t\_".$Photo.".jpg"); //Thumbnail speichern

 imagedestroy($thumb1); //Speicherabbild wieder loeschen
 imagedestroy($thumb2); //Speicherabbild wieder loeschen 

 echo "\n";
 echo "\n";
 echo "\n";
 echo "FILE UPLOADED

Sollte Ihr Browser keine weiterleitung unterstützen, [klicken Sie hier](%255C%2522http://domain.de?nav=%2524Nav&cont=%2524Cont&key=%2524Key%255C%2522)

\n";
 print\_r($\_FILES);

}

$thumb2=imagecreate($NeuBreite,$NeuHoehe); //Thumbnail im
Speicher erstellen

imagecopyresized($thumb2,$thumb1,0,0,$OrgBreite,$OrgHoehe,0,0,$NeuBreite,$NeuHoehe);
//Bild in Thumbnail kopieren

Hallo,

versuch’s doch mal mit „ImageCreateTrueColor“ und „ImageCopyResampled“, wobei ich davon ausgehe, dass PHP mit GD2 installiert ist.

Viel Erfolg!

Robi

Vielen Dank für deine Antwort, nur leider hat dies auch nichts gebracht :\
Oder muss ich was in der Syntax beachten?

$thumb2=ImageCreateTrueColor($NeuBreite,$NeuHoehe); //Thumbnail im Speicher erstellen
ImageCopyResampled($thumb2,$thumb1,0,0,$OrgBreite,$OrgHoehe,0,0,$NeuBreite,$NeuHoehe); //Bild in Thumbnail kopieren

PS: GD ist in der Version 2.0.28 installiert

ImageCopyResampled($thumb2,$thumb1,0,0,$OrgBreite,$OrgHoehe,0,0,$NeuBreite,$NeuHoehe);
//Bild in Thumbnail kopieren

Drehe mal die Angaben um:

ImageCopyResampled($thumb2,$thumb1,0,0,0,0,$NeuBreite,$NeuHoehe,$OrgBreite,$OrgHoehe);

Die ersten vier Parameter sind die Position, ab der bzw. wohin kopiert werden soll (falls du nur Ausschnitte eines Bildes kopieren willst), dann folgen die width- und height-Angaben des neuen Bildes und dann die des Orginals.

PS: GD ist in der Version 2.0.28 installiert

Dann sollte das eigentlich funktionieren!

Viel Erfolg!

Robi

1 Like

Drehe mal die Angaben um:

ImageCopyResampled($thumb2,$thumb1,0,0,0,0,$NeuBreite,$NeuHoehe,$OrgBreite,$OrgHoehe);

Danke, hat doch wirklich einen Syntax fehler! *rotwerd*
Danke für deine Hilfe :wink:

LG Matthias

> $NeuBreite = floor($OrgBreite / floor($OrgBreite / 100)); //die breite des Thumbnails  
> $NeuHoehe= floor($OrgHoehe / floor($OrgBreite / 100)); //die Höhe des Thumbnails

Ich verstehe nicht sooo viel von PHP, aber was bezweckst du mit diesen
Berechnungen? Du teilst die Originalbreite durch ein abgerundetes
Hundertstel der Originalbreite. Anschließend rundest du das Ergebnis
ab. Mit der Höhe machst du das gleiche. Das Seitenverhältnis kannst du
so nicht wahren.

Das Seitenverhältnis ist gewährt, da beide werde durch die gleiche Zahl dividiert werden!
Also… ich mir folgendes dabei gedacht:
OrgBreite / Gewünschte_Breite = Divisionsfaktor
Das heißt ich möchte bei den Thumbnails ungefähr eine Bildbreite von 100Pixel haben und errechne mir hier den Faktor mit dem ich Dividieren muss damit ich auf eine solche Auflösung komm! Da ich das ganze noch runde wirds halt ein bisschen ungenau aber im großen und ganzen kommts hin :wink:
Ich hoffe ich hab mich jetzt nicht zu sehr in meiner Erklärung verirrt :wink:

Lg Matthias

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Verlesen

$NeuHoehe= floor($OrgHoehe / floor($OrgBreite / 100)); //die Höhe des Thumbnails

Ich habe

$NeuHoehe= floor($OrgHoehe / floor($OrgHoehe / 100));

gelesen. Jetzt ist mir alles klar.

Aber du könntest doch gleich schreiben:

$NeuHoehe= floor(100 \* $OrgHoehe / $OrgBreite); 
$NeuBreite= 100;