Hi,
ich arbeite gerade recht erfolgreich mit Wasserzeichen auf Bildern.
Verwende ich als Wasserzeichen ein PNG mit schwarzen Hintergrund und weißer Schrift, so ist auf dem Endbild eine schöne weiße, transparente Schrift zu sehen.
Ist aber der Hintergrund weiß und die Schrift schwarz, so wird nicht etwa eine schwarze transparente Schrift eingesetzt, sondern der der Hintergrund erscheint als Box mit "ausgestanzter" Schrift.
Auf sehr hellen Bildern ist so ein Wasserzeichen aber nicht zu erkennen.
Habe dabei folgendes Skript verwendet:
Wie bekomme ich eine dunkle Schrift hin? Vorallem wie kann ich das Skript entscheiden lassen ob es die dunkle oder helle Schrift einbinden soll?
Danke!
ich arbeite gerade recht erfolgreich mit Wasserzeichen auf Bildern.
Verwende ich als Wasserzeichen ein PNG mit schwarzen Hintergrund und weißer Schrift, so ist auf dem Endbild eine schöne weiße, transparente Schrift zu sehen.
Ist aber der Hintergrund weiß und die Schrift schwarz, so wird nicht etwa eine schwarze transparente Schrift eingesetzt, sondern der der Hintergrund erscheint als Box mit "ausgestanzter" Schrift.
Auf sehr hellen Bildern ist so ein Wasserzeichen aber nicht zu erkennen.
Habe dabei folgendes Skript verwendet:
PHP-Code:
function watermark($image, $watermark, $save_as, $position, $transparency, $t_x=0, $t_y=0) {
// Michael Müller, 05.03.2004 17:05, [url]www.php4u.net[/url]
// Positionen:
// 1 oben links
// 2 oben mittig
// 3 oben rechts
// 4 Mitte links
// 5 Mitte
// 6 Mitte rechts
// 7 unten links
// 8 unten mittig
// 9 unten rechts
// erlaubt sind png und jpeg
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, $infos_img[0], $infos_img[1]));
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, 100))
return TRUE;
else
return FALSE;
}
return FALSE;
}
Danke!
Kommentar