thumbnails erstellen mit gb

lippi

Grünschnabel
hi, ich habe schon fast alle beiträge von hier durchgesehen aber sie helfen mir nicht weiter....

das ist mein thumbnail code den ich verwenden möchte um thumbnails von meinen bildern zu machen.
in der variable picdir
steht folgendes:
$picdir ="/cyber/gallerycreator/pics/";
global $picdir;

in $rs['pfad'] steht der bildname, z.b. bild123.jpg
es sind ausschliesslich jpg bilder...

PHP:
if($goto=="thumb") {
$sql="Select * from pics";
$result=$db->query($sql);
while($rs=$db->fetch($result)){
	
$im1=ImageCreateFromJPEG($picdir.$rs['pfad']); //erstellt ein Abbild im Speicher
$size=getimagesize($picdir.$rs['pfad']); //ermittelt die Größe des Bildes

$breite=$size[0]; //die Breite des Bildes
$hoehe=$size[1]; //die Höhe des Bildes
$breite_neu=100; //die breite des Thumbnails
$hoehe_neu=100; //die Höhe des Thumbnails

$im2=imagecreate($breite_neu,$hoehe_neu); //Thumbnail im Speicher erstellen

imagecopyresized($im2,$im1,0,0,$breite,$hoehe,0,0,$breite_neu,$hoehe_neu); //Bild in Thumbnail kopieren

imagejpeg($im2,"tn_".$rs['pfad'].".jpg"); //Thumbnail speichern

imagedestroy($im1); //Speicherabbild wieder löschen
imagedestroy($im2); //Speicherabbild wieder löschen

}
}

gd ist auf dem webserver installiert.... weiss einer was ich falsch mache?

vielen dank im voraus.

ps: echt gutes und schönes forum hier!

hier noch die mysql fehlermeldungen:

Warning: imagecreatefromjpeg(/cyber/gallerycreator/pics/1701d_wall1.jpg) [function.imagecreatefromjpeg]: failed to create stream: No such file or directory in /home/userarea/public_html/cyber/gallerycreator/install.php on line 113

Warning: getimagesize() [function.getimagesize]: Unable to access /cyber/gallerycreator/pics/1701d_wall1.jpg in /home/userarea/public_html/cyber/gallerycreator/install.php on line 114

Warning: getimagesize(/cyber/gallerycreator/pics/1701d_wall1.jpg) [function.getimagesize]: failed to create stream: No such file or directory in /home/userarea/public_html/cyber/gallerycreator/install.php on line 114

Warning: imagecopyresized(): supplied argument is not a valid Image resource in /home/userarea/public_html/cyber/gallerycreator/install.php on line 123

Warning: imagejpeg() [function.imagejpeg]: Unable to open 'tn_1701d_wall1.jpg.jpg' for writing in /home/userarea/public_html/cyber/gallerycreator/install.php on line 125

Warning: imagedestroy(): supplied argument is not a valid Image resource in /home/userarea/public_html/cyber/gallerycreator/install.php on line 127
 
Zuletzt bearbeitet:
Hast du mal probiert mit deiner Zusammensetzung des Pfades das Bild normal via echo "<img src="... " auszugeben ? Weil wenn ich mir die Fehlermeldungen so angucken würde ich mal darauf tippen, dass zwar dein Code an sich OK ist, er aber nicht auf das Bild zugreifen kann, weil wahrscheinlich der Pfad falsch ist.
 
das ganze funktioniert sozusagen... er speichert die bilder mit th_ vor dem eigentlichen dateinamen... mein problem ist es nur noch, das er nur ein schwarzer kasten speichert... an was kann das liegen?


PHP:
while($rs=$db->fetch($result)){
	
$im1=ImageCreateFromJPEG($_SERVER['DOCUMENT_ROOT'].$picdir.$rs['pfad']); //erstellt ein Abbild im Speicher
$size=getimagesize($_SERVER['DOCUMENT_ROOT'].$picdir.$rs['pfad']); //ermittelt die Größe des Bildes

$breite=$size[0]; //die Breite des Bildes
$hoehe=$size[1]; //die Höhe des Bildes
$breite_neu=100; //die breite des Thumbnails
$hoehe_neu=100; //die Höhe des Thumbnails

$im2=imagecreate($breite_neu,$hoehe_neu); //Thumbnail im Speicher erstellen

imagecopyresized($im2,$im1,0,0,$breite,$hoehe,0,0,$breite_neu,$hoehe_neu); //Bild in Thumbnail kopieren

imagejpeg($im2,$_SERVER['DOCUMENT_ROOT'].$picdir."th_".$rs['pfad']); //Thumbnail speichern

imagedestroy($im1); //Speicherabbild wieder löschen
imagedestroy($im2); //Speicherabbild wieder löschen
}
}

die bilder gebe ich schon mit dem image befehl aus:

PHP:
if($goto=="see") {
$sql="Select * from pics";

// daten in table auslesen
$result=$db->query($sql);
$dir= $picdir;
while($rs=$db->fetch($result)){
	
	echo $rs["gallery"]."<br>\n";	
	echo $rs["pfad"]."<br\n>";
	echo "<br>";

	echo "<img src='".$dir."th_".$rs['pfad']."'></img><br><br>";
	
	}
}
 
PHP:
//Probier mal an Stelle von
$im2=imagecreate($breite_neu,$hoehe_neu);
//folgendes
$im2=imagecreatetruecolor($breite_neu,$hoehe_neu);
//hatte das Problem glaube ich auch und es so gelöst.
 
Hallo,

ich häng' mich da mal rein denn ich fange gerade an, mich damit zu beschäftigen und dieses Thread hat mir schon ein ganzes Stück weiter geholfen. Deswegen schon mal: Danke!

Trotzdem eine Frage: wenn ich das so mache, wie oben beschrieben, erstellt es zwar ein Thumbnail und kopiert einen Bildausschnitt aus dem Originalbild rein. Soweit alles prima, doch es zieht den Bildausschnitt im Thumbnail größer, was ja widersinnig ist.

Wie beeinflusse ich, ob es den Ausschnitt im Original lässt, vergrößert oder verkleinert?

Den Ausschnitt in meinem Thumbnail hab' ich übrigens bei der Koordinate 50/50 des Originalbildes angesetzt, deswegen der Ausschnitt aus der »Mitte«.

Danke schonmal im Voraus.
ciao | 27apricot

ps: Übrigens hab' ich im Script oben noch was entdeckt, was auf meinem Server als Fehler gemeldet wird:

PHP:
//so steht's oben:
imagecopyresized($im2,$im1,0,0,$breite,$hoehe,0,0,$breite_neu,$hoehe_neu);
//so muss es nach php-Manual lauten:
imagecopyresized($im2,$im1,0,0,0,0,$breite,$hoehe,$breite_neu,$hoehe_neu);
//also: erst alle Koordinaten, dann alle Ausmaße
 
Wenn man schon imagecreatetruecolor nimmt, sollte man auch imagecopyresampled statt imagecopyresized nehmen. Einfach den Funktionsnamen ersetzen, die Parameter sind gleich.
 
Dankesehr,

jetzt ist die Qualität des thumbnail-jpegs auf jeden Fall besser. Doch das Problem bleibt bestehen: der Ausschnitt ist größer als im Original!

Ciao + danke im Voraus,
27apricot.
 
Zuletzt bearbeitet:
Zurück