imgcreate ?!

Webby0815

Mitglied
hallo zusammen ,habe folgenden code :

Code:
header('content-type: image/jpeg');

	$watermark = imagecreatefrompng('watermark.png');
	$watermark_width = imagesx($watermark);
	$watermark_height = imagesy($watermark);
	$image = imagecreatetruecolor($watermark_width, $watermark_height);
	$image = imagecreatefromjpeg(''.$url.'.jpg');
	$size = getimagesize(''.$url.'.jpg');
	$dest_x = $size[0] - $watermark_width - 0;
	$dest_y = $size[1] - $watermark_height - 0;
	imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 30);
	imagejpeg($image);
	imagedestroy($image);
	imagedestroy($watermark);

ich möchte folgendes hinzufügen :
1. resize auf vorgegebene grösse
2. unter dem Bild ein Copyright balken ,der aber nocht über das bild geht ,sondern extra daunter ist ...


Wäre nett von euch ,wenn ihr mir helfen könntet.ich habe leider mit img create keinerlei ahnung :-(
 
zu 2)
Mach $image von Anfang an um den Balken höher
PHP:
$image = imagecreatetruecolor($watermark_width + $balkenhöhe, $watermark_height);
 
klar tut sich nichts. Du musst dann auch noch die (C)-Infos in den Balken schreiben und $balkenhöhe vorher definieren

Nachtrag;Stimmt, du überschreibst ja $image gleich wieder.....
PHP:
    $image = imagecreatetruecolor($watermark_width, $watermark_height);
    $image = imagecreatefromjpeg(''.$url.'.jpg');
 
Nope. Hier im Forum werde die Probleme gelöst. (Ich skype und chatte nie)
Ich poste hier mal dein Code mit Kommentaren von mir. Dann musst du dir überlegen was genau was ist.
PHP:
//öffnen der Grafik für das Wasserzeichen	
$watermark = imagecreatefrompng('watermark.png');
//Grösser derselben auslesen
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);

//Eine neue Grafik alegen mit der Grösse des Wasserzeichens
//Da $image gleich nachher überschrieben wird, ist diese Zeile unnütz oder die Andere ist falsch
$image = imagecreatetruecolor($watermark_width, $watermark_height);
//Die Grafik überschreiben mit der Datei {$url}.jpg
$image = imagecreatefromjpeg(''.$url.'.jpg');

//Grösse der Grafik ermitteln
$size = getimagesize(''.$url.'.jpg');
//Differenzgrösse berechnen. Grösse der Grafik - Grösse des Wasserzeichens
//Gibt übrigens dann bei magecopymerge() Fehler wenn das Wasserzeichen grösser als {$url}.jpg ist
$dest_x = $size[0] - $watermark_width - 0;
$dest_y = $size[1] - $watermark_height - 0;

//Kopiert das Wasserzeichen in die Grafik.
imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 30);

//Grafik ausgeben etc.
imagejpeg($image);
imagedestroy($image);
imagedestroy($watermark);

Darum mal die einfachen Fragen
a) was ist die 'vorgegebene grösse'?
b) Wo genau soll das Wasserzeichen liegen
c) Wie soll denn diese (C)-Balken aussehen. Ein einfacher Text? Oder eine Grafik?
 
also , der cr balken soll unter das bild ,die grafik ist die watermark.png und ist 70 pixel hoch

der plan für die grösse ist ,wenn man später in der url &size= macht vrschiedenen grössen generiert werden. die if abfrage ist kein prob ,blos die gesamte verkleinerung des bildes halt ...

Gruss
 
Aso - das ist doch nicht so schwer. Aber als erstes müssen wir mal defineren was mit der size gemacht werden soll, sie übergeben wird. Ist das die max. Seitenlänge eines Bildes? Also bei Hochformatig die Höhe und bei einem Breitformatigen die Breite? Oder immer die Höhe? Oder immer die Breite?
 
So auf die schnelle und ungetestet
PHP:
$size = 780;
$srcFile = $url.'.jpg';
$crFile = 'watermark.png';

//Qellgrösse bestimmen
$srcInfo = getimagesize($scrFile);
$srcW = $srcInfo[0];
$srcH = $srcInfo[1];

//Neue Grösse des Bildes errechnen
$factor = $size/$srcH;
$targetH = $srcH * $factor;
$targetW = $srcW * $factor;

//(c)-Balken öffnen
$cright = imagecreatefrompng($crFile);

//Neue Grafik anlegen. Dabei die Höhe noch um den (c)-Balken erweitern
$target = imagecreatetruecolor($targetH  + imagesy($cright) , $targetW);

//Source öffnen
$source = imagecreatefromjpeg($srcFile);
//Und in die Zielgraffik verkleinern
imagecopyresized($target, $source, 0, 0, 0, 0, $targetW, $targetH, $srcW, $srcH);

//(c)-Balken kopieren
imagecopy($target, $cright, 0, $targetH, 0, 0, imagesx($cright), imagesy($cright));

//Grafik ausgeben etc.
header('content-type: image/jpeg');
imagejpeg($target);
imagedestroy($target);
imagedestroy($source);
imagedestroy($cright);
 
Zurück