ein PNG mit einem Wasserzeichen versehen

schecker

Erfahrenes Mitglied
Hi habe aich schon mit in der Suche geschaut aber mein Problem nicht richtig gefunden.
Also habe folgendes Problem: Ich habe auf meinem Webserver ca. 250 verschiedene PNG und ca. 200 verschiedene jpg Bilder die ich nun mit einem Wasserzeichen versehen muss, da öffters meine Bilder durch irgendwelche User ohne Erlaubniss genutzt wurden.
Da die Bilder immer 311px x 281px groß ind habe ich mir eine dementsprechend großes Wasserzeichen ertsellt.

Und ein Script erstellt welches das Wasserzeichen dann auf die Bilder pinselt.

Dies geht auch wunderbar wenn es eine JPG Grafik ist. Da ich es auber auch bei den PNGs brauche und nach langer Suche habe ich folgendes erstellt:
PHP:
//Bild anzeigen lassen
header("Content-Type: image/png");
//Bilder Laden
$Grafik = ImageCreateFromPNG("1204630704.png"); //Beispielbild für Test
$Wasserzeichen = ImageCreateFromPNG("wasserzeichen.png"); // Das Wasserzeichen

/*
 * gefunden auf www.tutorials.de
 */
$trans = imagecolorat($wasserzeichen, 0, 0);
imagecolortransparent($wasserzeichen, $trans);
imagecopy($Grafik, $overlay, 0, 0, 0, 0, 0, 0); 

imagepng($Grafik);

Hier bekomme ich aber immer die Fehlermeldung :
HTML:
Die Grafik "..." kann nicht angezeigt werden, weil sie Fehler enthält.

Worann kann das liegen?

Bitte helft mir!

Danke schecker
 
Hi habe aich schon mit in der Suche geschaut aber mein Problem nicht richtig gefunden.
Also habe folgendes Problem: Ich habe auf meinem Webserver ca. 250 verschiedene PNG und ca. 200 verschiedene jpg Bilder die ich nun mit einem Wasserzeichen versehen muss, da öffters meine Bilder durch irgendwelche User ohne Erlaubniss genutzt wurden.
Da die Bilder immer 311px x 281px groß ind habe ich mir eine dementsprechend großes Wasserzeichen ertsellt.

Und ein Script erstellt welches das Wasserzeichen dann auf die Bilder pinselt.

Dies geht auch wunderbar wenn es eine JPG Grafik ist. Da ich es auber auch bei den PNGs brauche und nach langer Suche habe ich folgendes erstellt:
PHP:
//Bild anzeigen lassen
header("Content-Type: image/png");
//Bilder Laden
$Grafik = ImageCreateFromPNG("1204630704.png"); //Beispielbild für Test
$Wasserzeichen = ImageCreateFromPNG("wasserzeichen.png"); // Das Wasserzeichen

/*
 * gefunden auf www.tutorials.de
 */
$trans = imagecolorat($wasserzeichen, 0, 0);
imagecolortransparent($wasserzeichen, $trans);
imagecopy($Grafik, $overlay, 0, 0, 0, 0, 0, 0); 

imagepng($Grafik);

Hier bekomme ich aber immer die Fehlermeldung :
HTML:
Die Grafik "..." kann nicht angezeigt werden, weil sie Fehler enthält.

Worann kann das liegen?

Bitte helft mir!

Danke schecker

Hallo,

probiere mal die Breite und Höhe anzugeben.

PHP:
$w = imagesx($img);
$h = imagesy($img); 
imagecopy($Grafik, $overlay, 0, 0, 0, 0, $w,$h);

Sorry habe was übersehen, $overlay und $wasserzeichen sind nicht definiert.

Also so müsste es gehen.

PHP:
//Bild anzeigen lassen
header("Content-Type: image/png");
//Bilder Laden
$Grafik = ImageCreateFromPNG("1204630704.png"); //Beispielbild für Test
$Wasserzeichen = ImageCreateFromPNG("wasserzeichen.png"); // Das Wasserzeichen

/*
 * gefunden auf www.tutorials.de
 */
$trans = imagecolorat($Wasserzeichen, 0, 0);
imagecolortransparent($Wasserzeichen, $trans);
imagecopy($Grafik, $Wasserzeichen,  0, 0, 0, 0, 0, 0); 

imagepng($Grafik);
 
Zuletzt bearbeitet von einem Moderator:
Hi, danke für die Antwort aber es geht irgendwie immer noch nicht. Habe jetzt Testweise mal
PHP:
//Bild anzeigen lassen
header("Content-Type: image/png");
//Bilder Laden
$Grafik = ImageCreateFromPNG("1204630704.png"); //Beispielbild für Test
$Wasserzeichen = ImageCreateFromPNG("wasserzeichen.png"); // Das Wasserzeichen
imagepng($Grafik);
gemacht. Und auch hier kommt die Meldung, dass das Bild nicht angezeigt werden kannwel es Fehler enthält

Gruß schecker
 
Hallo,

würde sagen der Pfad zu den Bildern stimmt dann nicht. Oder aber was sagt die phpinfo, ist die GD installiert?

Gruss
 
Hi also GD ist installiert. Da das Bild im Selben Ordner wie das Script ligt, sollte der Pfad auch stimmen.

Gruß schecker
 
Hi also GD ist installiert. Da das Bild im Selben Ordner wie das Script ligt, sollte der Pfad auch stimmen.

Gruß schecker

So habe das hier mal getestet.
PHP:
//Bild anzeigen lassen
header("Content-Type: image/png");
//Bilder Laden
$Grafik = ImageCreateFromPNG("1204630704.png"); //Beispielbild für Test
$Wasserzeichen = ImageCreateFromPNG("wasserzeichen.png"); // Das Wasserzeichen

/*
 * gefunden auf www.tutorials.de
 */
$trans = imagecolorat($Wasserzeichen, 0, 0);
imagecolortransparent($Wasserzeichen, $trans);
imagecopy($Grafik, $Wasserzeichen,  0, 0, 0, 0, 0, 0); 

imagepng($Grafik);

du musst natürlich hier imagecopy($Grafik, $Wasserzeichen, 0, 0, 0, 0, 0, 0); noch die Koordinaten angeben, wo das Wasserzeichen hin soll, z.B. imagecopy($Grafik, $Wasserzeichen, 0, 0, 0, 0, 50, 50);

deine fehlermeldung sagt, das das Script ein Bild nicht findet, überprüfe das mal und achte auf Groß-Kleinschreibung.


hier mal noch ein kleines Beispiel, was funktioniert.

PHP:
//Bild anzeigen lassen
header("Content-Type: image/png");
//Bilder Laden
$Grafik = ImageCreateFromPNG("1204630704.png"); //Beispielbild für Test
$Wasserzeichen = ImageCreateFromPNG("wasserzeichen.png"); // Das Wasserzeichen
$w = imagesx($Wasserzeichen);
$h = imagesy($Wasserzeichen);  
/*
 * gefunden auf www.tutorials.de
*/
$trans = imagecolorat($Wasserzeichen, 0, 0);
imagecolortransparent($Wasserzeichen, $trans);
imagecopy($Grafik, $Wasserzeichen,  100, 100, 0, 0, $w, $h); 
 
imagepng($Grafik);
 
Zurück