WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   wasserzeichen (http://www.wcm.at/forum/showthread.php?t=159214)

AlexanderFX 19.02.2005 20:16

wasserzeichen
 
hallo miteinander

ich wollt wissen wie ich ein wasserzeichen auf ein jpg bild dynamisch mittels php erzeuge und gleich ausgeben kann

danke im vorraus
mfg alex

AlexanderFX 19.02.2005 20:47

hmm ich hab jetzt schon einige scripte gefunden
unter anderem dieses hier:
PHP-Code:

<?php
// Copyright by A. Suter - You can remove this line

/////////////////////////////
// Configuration, Settings //
/////////////////////////////
$f1     $_GET["f1"];     // Filename of the background image
$f2     $_GET["f2"];     // Filename of the watermark image
$t      $_GET["t"];      // Transparent color for the watermark image
$align  $_GET["align"];  // Horizontal alignment (left, center, right)
$valign $_GET["valign"]; // Vertical alignment (top, middle, bottom)
$alpha  $_GET["alpha"];  // Alpha blending of the watermark

/* Set default values */
$alpha = (($alpha=="")?80:$alpha);


/////////////////////////////
// Header sendings         //
/////////////////////////////

/* Avoid caching the histogram */
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0"false);
header("Pragma: no-cache");

/* Ensure the returned bytes are interpreted as jpeg-image */
header("Content-type: image/jpeg");


/////////////////////////////
// Script                  //
/////////////////////////////

/* Open images and get their dimensions */
$im1 imagecreatefromjpeg($f1);
$im2 imagecreatefrompng($f2);
$s1  getimagesize($f1);
$s2  getimagesize($f2);

if ( 
$t != "" )
{
/* Check whether the watermark is truecolor or not */
if ( imageistruecolor($im2) )
$col imagecolorallocate($im2hexdec(substr($t,0,2)), hexdec(substr($t,2,2)), hexdec(substr($t,4,2)));
else
$col imagecolorexact($im2hexdec(substr($t,0,2)), hexdec(substr($t,2,2)), hexdec(substr($t,4,2)));

/* Set the transparent color */
imagecolortransparent($im2$col);
}

/* Get the position of the watermark */
if ( $align == "left" )        $x 0;
elseif ( 
$align == "right" )   $x $s1[0] - $s2[0];
else                           
$x = ($s1[0] - $s2[0]) / 2;
if ( 
$valign == "top" )        $y 0;
elseif ( 
$valign == "bottom" $y $s1[1] - $s2[1];
else                           
$y = ($s1[1] - $s2[1]) / 2;

/* Copy and merge the two images */
imagecopymerge($im1$im2$x$y00$s2[0], $s2[1], $alpha);

/* Return the image */
imagejpeg($im1''100);
imagedestroy($im1);
imagedestroy($im2);

?>

nur hab ihc keine ahnung was ich dann in den img tag schreiben soll..

kann mir jemand bitte helfen
mfg alex

jak 21.02.2005 09:45

Wenn du den Php-Quelltext unter "bild.php" abspeicherst, dann sieht der <img> Tag in etwa so aus:
[img]bild.php?f1=dasBild.jpg&f2=dasWasserzeichen.png[/img]
Die anderen Parameter kannst du natürlich auch noch anhängen (t, align, valign, alpha - sind im Code eh dokumentiert).

Jak

AlexanderFX 22.02.2005 17:14

hey danke.. hat alles funktioniert =D
thx

AlexanderFX 22.02.2005 20:56

so für alle die vorhaben das script mal auszuprobieren (da ja schon viele klicks auf dem post waren)

wie gesagt im image tag aufrufen ..
dann die bildurl ($f1) von der aufgerufenen seite(ich nenn sie mal watermark.php) aus angeben, nicht von der seite von der das bild geöffnet wird, die ist natürlich egal falls die 2 datein im gleichen ordner liegen

weiters t bedeutet transparent.. und kennzeichnet die farbe die er transparent machen soll. die farbe als code einfach in der url übergeben aber ohne #

ausrichtung ist klar.
bei png erstellen muss man nicht viel beachten

falls das png größer is als das ausgangsbild wird kein bild angezeigt.

so i glaub das war das wichtigste

mfg alex

jak 22.02.2005 21:21

Was noch manchmal ein Fehler ist: Das Skript sollte in einer eigenen Datei stehen, insbesondere darf kein Text ausgegeben werden, da der Browser das Bild sonst nicht lesen kann.

Jak


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag