Bilder mit GD2 resized was brauche ich?

so weit bin ich schon mal ^^


PHP:
$testt = "./pic_tmp/hmpf^^.jpg";
$newims = "./pic_tmp/hmpf.jpg";




$imageMaxW = 200;
$imageMaxH= 220;
$image = imagecreatefromjpeg($testt);
$imgzeichen = imagecreatefrompng('./pic_tmp/watermark_sg.png');
$bild = getimagesize($testt);
if(($bild[0] > $imageMaxW) || ($bild[1] > $imageMaxH)) {
if($bild[0]>$bild[1]) {
// querformat
$faktor = $bild[0]/$imageMaxW;
} else {
// hochformat oder quadrat
$faktor = $bild[1]/$imageMaxH;
} }
$newWidth = floor($bild[0]/$faktor);
$newHeight= floor($bild[1]/$faktor);
$w = imagesx($imgzeichen); 
$h = imagesy($imgzeichen);  
$newImg = imagecreatetruecolor($newWidth,$newHeight);
$testpic = imagecopyresized($newImg, $image, 0, 0, 0, 0, $newWidth, $newHeight, $bild[0], $bild[1]);  
$lol = imagecopy($testpic, $imgzeichen,  100, 100, 0, 0, $w, $h); 
imagejpeg($lol, $newims, 100);
imagedestroy($newImg); // JPEG löschen

echo "newHeight: $newHeight</br>";
echo "newWidth: $newWidth</br>";


aber ich bekomme einen fehler weiß aber net woher?!

Warning: imagecopy(): supplied argument is not a valid Image resource in /var/www/vhosts/-.com/httpdocs/sg_neu/main/index.php on line 935

Warning: imagejpeg(): supplied argument is not a valid Image resource in /var/www/vhosts/-.com/httpdocs/sg_neu/main/index.php on line 936
newHeight: 150
newWidth: 200
 
Du hast bei imagecopy() und imagejpeg() das verkehrte Quellbild angegeben, in beiden Fällen muss $newImg als Quelle genannt werden.
Klingt zwar unlogisch, ist aber so. ;)
Darum muss man auch aufpassen dass man die richtige Reihenfolge bei den Funktionen einhält..... sonst kann man ganz schnell verzeifeln. ;)

Die Variablennamen $testpic und $lol vor den Funktionen kannst Du löschen.
 
So genau habe ich mir das Script nicht angesehen..... bei einem kurzen Test hat sich aber gezeigt dass das Wasserzeichen vorhanden ist.
Möglicherweise wurde es bei Dir also nur ausserhalb des Bildbereichs platziert.
 
Breite des neuen Bildes - Breite des Wasserzeichens = Position X
Höhe des neuen Bildes - Höhe des Wasserzeichens = Position Y

Ausserdem hast Du noch ein Fehler in der Berechnung des Faktors.
PHP:
// querformat
$faktor = $bild[0]/$bild[1];
} else {
// hochformat oder quadrat
$faktor = $bild[1]/$bild[0];
 
Wieso so kompliziert mit getimagesize()? Besser
PHP:
$height = imagesx($image);
MfG, Andy
 
@Catull, mit getimagesize() oder imagesx()/imagesy() bekommt man aber nur die Grösse des jeweiligen Bildes, nicht aber die notwendige Position.
Das Wasserzeichen, welches für gewöhnlich kleiner als das eigentliche Bild ist, soll in der rechten unteren Ecke platziert werden.
 
Zurück