phpbar.de logo

Mailinglisten-Archive

[php] "signatur" (textstring) in eine bilddatei schreiben

[php] "signatur" (textstring) in eine bilddatei schreiben

Daniel Haller daniel_haller at gmx.de
Mon Jan 3 20:28:13 CET 2005


Hallo alle zusammen,

zunächst mal ein frohes neues euch allen !

ich versuche mich an einer klasse,
die alle angelegenheiten rund um vom user hochgeladende bilder managen soll
(validieren, speichern, größenänderungen, komprimieren usw.)

u.a. soll es auch die möglichkeit geben,
die bilder mit einem gege. Textstring zu versehen, z.B. einem Copyright o.ä.

dazu habe ich mit eine kleine Methode geschrieben, die ein geg. Bild öffnet,
ein 2tes Bild mit einem Textstring generiert und
danach beide Bilder "ineinander" kopiert und wieder speichert.

Folgendes kam dabei heraus (hoffe, es halbwegs verständlich kommentiert):

/**
* 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,$StringWidt  h,$StringHeight,100);

/* Neues Bild (Orginalbild mit Beschriftung) speichern */
imagejpeg($SrcImg,"/www/_Testdir_local/image-process/uploaded_resized/TEST3.JPG");

} // function AddWatermark

Pfade u.ä. habe ich zum Testen mal hartcodiert.
Aber irgendwas stimmt nicht, das "Ausgabebild" TEST3.JPG besteht leider nur aus einer Kopie des Orginalbildes,
mehr nicht. Da ist kein Textstring drin. Wenn ich mir aber den Textstring $StrImg als Bild ausgeben lasse,
ist es korrekt.

Beide Bilder (Textstring und Kopie d. Orginalbildes) werden also richtig erzeugt.
Ich vermute mal, es hakt irgendwo bei imagecopymerge.
Bildhandler verwechselt?
Falscher Gebrauch der Funktion?
Fehlermeldungen bekomme ich zumindest keine.
imagecopy() statt imagecopymerged klappt übrigens auch nicht :-(

vielleicht weiß jemand von euch rat?
Vielen Dank im voraus,

Grüße,
Daniel

P.S.: Nutze die GD-Lib2.0,
uch rufe die o.g. Methode mit
$image -> AddWatermark(NULL,"Ich bin ein Teststring") auf...


php::bar PHP Wiki   -   Listenarchive