Wasserzeichen
Diese Funktion erlaubt euch, ein Logo teils
transparent auf ein bestehendes Bild zu setzen und das so entstandene
"Bild mit Wasserzeichen" zu speichern.
Das findet natürlich vor allem Anwendung, wenn eigene Grafiken bzw.
Bilder vor Content-Klau geschützt werden sollen: Ist das eigene Logo
(z.B. mit der eigenen Internetadresse) in der Mitte des Bildes
halbtransparent platziert, wird das Bild kaum einer klauen und die User
sehen trotzdem fast unbehindert das eigentliche Bild.
Der Funktionsaufruf erfolgt mit folgenden Parametern: Originalbild, Logo
(Wasserzeichen), Speicherstelle für das neue Bild, Position (von 1-9, wie
bei einem Telefon angeordnet - Standardwert Mitte), Transparenz
(Standartwert 50 - dieser Wert muss zwischen 0 und 100 liegen),
Transparenz-Pixel (angegeben durch x und y). Die beiden angegebenen Werte
für den Transparenz-Pixel haben folgenden Sinn: Die Farbe dieses Pixels
wird transparent dargestellt - ist zum Beispiel ein weißter Rand
(Hintergrund) um euer Logo, könnt ihr einen dieser Pixel im Hintergrund
auswählen, als Parameter übergeben, sodass er und alle anderen
gleichfarbigen Pixel dann transparent (bezieht sich nur aufs Logo)
erscheinen, und somit im entstehenden Bild nicht zu sehen sind.
Dieser Schnipsel benötigt die GD-Lib, Version 2.0 oder höher.
|
Script: |
<?php
function watermark($image, $watermark, $save_as, $position=5, $transparency=50, $t_x=0, $t_y=0) {
if($position < 1 || $position > 9)
return FALSE;
if(!file_exists($image) || !file_exists($watermark))
return FALSE;
$infos_img = getimagesize($image);
$infos_wat = getimagesize($watermark);
if(!in_array($infos_img[2], array(2,3)) || !in_array($infos_wat[2], array(2,3)))
return FALSE;
if($infos_img[0]<$infos_wat[0] || $infos_img[1]<$infos_wat[1])
return FALSE;
if($infos_wat[0]<$t_x || $infos_wat[1]<$t_y)
return FALSE;
$transparency = 100 - $transparency;
if($transpareny < 0 || $transpareny > 100)
return FALSE;
@unlink($save_as);
// Position x
switch (($position-1)%3) {
case 0:
$pos_x = 0;
break;
case 1:
$pos_x = round(($infos_img[0]-$infos_wat[0])/2, 0);
break;
case 2:
$pos_x = $infos_img[0]-$infos_wat[0];
break;
}
// Position y
switch (floor(($position-1)/3)) {
case 0:
$pos_y = 0;
break;
case 1:
$pos_y = round(($infos_img[1]-$infos_wat[1])/2, 0);
break;
case 2:
$pos_y = $infos_img[1]-$infos_wat[1];
break;
}
// watermark-procedure
if($infos_img[2] == 2)
$img_image = imagecreatefromjpeg($image);
if($infos_img[2] == 3)
$img_image = imagecreatefrompng($image);
if($infos_wat[2] == 2)
$img_watermark = imagecreatefromjpeg($watermark);
if($infos_wat[2] == 3)
$img_watermark = imagecreatefrompng($watermark);
imagealphablending($img_image, TRUE);
imagealphablending($img_watermark, TRUE);
imagecolortransparent($img_watermark, imagecolorat($img_watermark, $t_x, $t_y));
imagecopymerge($img_image, $img_watermark, $pos_x, $pos_y, 0, 0
, $infos_wat[0], $infos_wat[1], $transparency);
if(strtolower(substr($save_as, -3)) == "png") {
if(imagepng($img_image, $save_as))
return TRUE;
else
return FALSE;
} else {
if(imagejpeg($img_image, $save_as))
return TRUE;
else
return FALSE;
}
return FALSE;
}
if(watermark("ausgangsbild.jpg", "logo.png", "speichere_unter.jpg", 5))
echo "<img src=\"speichere_unter.jpg\"><br /><br />\n";
?>
|
|