Hi,
vielen dank für deine antwort.
Zunächst: so wie das aussieht schreibst du eine Funktion, keine Klasse (oder eine Klassenfunktion, aber es geht nicht um eine Klasse, oder?).
nein, ich schreibe an einer klasse, die das gesamte handling von hochgeladenen bildateien regeln soll (validierung, verkleinern, beschriften, speichen usw.)
der rest der klasse ist aber für mein problem unerheblich und ich wollte niemanden den gesamten code zumuten :-)
und die "funktionen" innerhalb einer klasse werden meines wissens nach als methoden bezeichnet, auch wenn sie genauso wie funktionen definiert werden. lass mich da aber gern eines besseren belehren.
Und: Unter Wasserzeichen versteht man, ein Bild nicht sichtbar so zu modifizieren, daß z.B. eine Copyright-Information darin enthalten ist. Ob das mit PHP überhaupt möglich ist, weiß ich nicht. Für so etwas gibt es z.B. in Photoshop die Funktion "embed watermark".
ok, dann hab ich mich falsch ausgedrückt.
ich will also 2 bilder ineinander kopieren.
Mal eine blöde Frage:
Warum erzeugst du den String nicht direkt in deinem Originalbild? Deine Variante kommt mir vor wie "von hinten durch die Brust ins Auge".
ok, hast du recht. meine methode bietet allerdings etwas mehr flexibnilität finde ich. aber ist ja auch noch nicht fertig.
ich habe mal meinen quellcode etwas angepasst,
und bin darauf gekommen, das ds problem irgendwo bei dem imagecopymerge liegen muss. der handler mit dem Textstring wird einfach nicht in das Orginalbild einkopiert....
keine Ahnung wiso, beide Bilder (das Ausgangsbild und das Bild mit dem Text-String) werden korrekt erzeugt...??
Mein (angepasster und besser kommentierter) code dazu:
/**
* AddWatermark
* platziert einen geg. Textstring in geg. Bilddatei
*/
function AddWatermark($SrcImgPath,$TxtString) {
/* Allg. Variablen */
$SrcImgPath = "/www/_Testdir_local/image-process/uploaded_resized/_X_20041231164330_CIMG0005.JPG";
$FontType = imageloadfont('proggyclean.gdf');
$PaddingHeight = 4;
$PaddingWidth = 8;
/* Abmessungen d. Wasserzeichens festlegen */
$StringWidth = imagefontwidth($FontType) * strlen($TxtString)+$PaddingWidth;
$StringHeigth = imagefontheight($FontType)+$PaddingHeight;
/* Text- und Hintergrundfarbe fuer Wasserzeichen */
$StrImg = imagecreate($StringWidth,$StringHeigth);
$BackColor = imagecolorallocate($StrImg,174,171,182);
$TxtColor = imagecolorallocate($StrImg,255,255,255);
/* Handler d. Textbildes mit Text versehen */
imagestring($StrImg,$FontType,$PaddingWidth/2,$PaddingHeight/2,$TxtString,$TxtColor);
/* Handler vom Orginalbild erstellen */
$SrcImg = imagecreatefromjpeg($SrcImgPath);
/* Aus beiden Handlern ein Bild machen (StrImg in SrcImg einkopieren) */
imagecopymerge($SrcImg,$StrImg,0,0,0,0,$StringWidth,$StringHeight,100);
/* Neues Bild (Orginalbild mit Beschriftung) speichern */
imagejpeg($SrcImg,"/www/_Testdir_local/image-process/uploaded_resized/TEST3.JPG");
} // function AddWatermark
irgendwo bei dem imagecopymerge muss der wurm drinsein.
imagecopy klappt genauso wenig.
TEST3.JPG ist nachher nur das Ausgangsbild - OHNE den string, den ich einkopieren wollte...
Aufruf der Methode übrigens mit $image -> AddWatermark(NULL,"Daniel Haller, 2004"); - sollte eigentlich auch korrekt sein.
Weiß jemand weiter?!?
Grüße,
Daniel