Tutorials Infos - Anleitungen - Hilfe - Dreamcodes
 

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";
?>

 
ID: 521
eingestellt am: 30.07.2004
Autor: Richard Berger
Status zum lesen: Gast
gelesen: 12391
Webseite: www.dreamcodes.com
[Drucken]