TAiS46: Text auf bild -> bild mit text auf anderes bild!

So hallo erstmal!
Ich möchte, das ein bild mit einem text erzeugt wird, und das bild mit dem text dann an ein anderes bild unten rauf kopieren.
Leider funktioniert der code unten nicht.
Ich denke es liegt daran, das er später bei
imagejpeg($SrcImg,"TEST3.JPG");
ein neues leeres bild erstellt oder?

Danke für antworten, Greetz TAiS46

<?
 /**
 * AddWatermark
 * platziert einen geg. Textstring in geg. Bilddatei
 */
 AddWatermark(avatar.jpg, 'hallo');

function AddWatermark($SrcImgPath,$TxtString) {

/* Allg. Variablen */
   $SrcImgPath = "avatar.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,"TEST3.JPG");

} // function AddWatermark
?>

  1. So hallo erstmal!
    Ich möchte, das ein bild mit einem text erzeugt wird, und das bild mit dem text dann an ein anderes bild unten rauf kopieren.
    Leider funktioniert der code unten nicht.
    Ich denke es liegt daran, das er später bei
    imagejpeg($SrcImg,"TEST3.JPG");
    ein neues leeres bild erstellt oder?

    Hallo,

    imagejpeg() geht schon in Ordnung, das schreibt Dein $SrcImg in eine Datei. Was geht denn genau nicht? Kommt gar kein Bild? Gibt es eine Fehlermeldung, wenn Du error_reporting(E_ALL); am Anfang Deines Skripts notierst? Lt. PHP-Doku nimmt imagestring() auch die Zahlen 1 bis 5 als Argument für den Font und benutzt dann einen eingebauten Font. Klappt das?

    Simon

    1. Was geht denn genau nicht? Kommt gar kein Bild? Gibt es eine Fehlermeldung, wenn Du error_reporting(E_ALL); am Anfang Deines Skripts notierst?

      Also es wird das anfangsbild nocheinmal als test3.jpg gespeichert aber ohne schrift.
      Mit error_repording(E_ALL);
      kommt das hier.

      Notice: Use of undefined constant avatar - assumed 'avatar' in /***/test.php on line 7

      Notice: Use of undefined constant jpg - assumed 'jpg' in /***/test.php on line 7

      Notice: Undefined variable: StringHeight in /***/test.php on line 33

      1. handelte sich nur um ein rechtschreibfehler!!!
        Tut mir leid, danke bye

        1. handelte sich nur um ein rechtschreibfehler!!!
          Tut mir leid, danke bye

          np :-)

          Genau solche Fehler findet man mit dem error_reporting(). Ich baue das grundsätzlich in jedes Skript ein.

          Simon