:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte
Unternehmen im
Anbieterverzeichnis von SELFPHP
:: SELFPHP Forum ::
Fragen rund um die Themen PHP? In über
120.000 Beiträgen finden Sie sicher die passende
Antwort!
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
:: Qozido ::
Die Bilderverwaltung mit Logbuch für
Taucher und Schnorchler.
|
|
Wasserzeichen on-the-fly in Bild einfügen |
Beispielaufgabe
In ein bestehendes Bild soll on-the-fly ein Wasserzeichen mit variabler Transparenz eingeblendet werden.
Beschreibung
Der folgende Code Snippet erzeugt on-the-fly ein neues Bild (GIF, JPEG oder PNG) mit einem Wasserzeichen. Das Script wird im IMG-Tag mit einem Query folgender Parameter aufgerufen.
- "d" - ist das Bild in das, das Wasserzeichen eingefügt werden soll.
- "w" - gibt den Dateinamen des Wasserzeichen an.
Optionale Parameter:
- "p" - bestimmt die Position an der das Wasserzeichen eingefügt wird.
- "t" - legt die Transparenz (in Prozent) des Wasserzeichens fest.
- "q" - steuert die Ausgabequalität, wenn der Ausgabetype ein JPEG-Bild ist.
- "r" - selektiert den Ausgabetype (GIF, JPEG oder PNG).
Weitere Informationen zu den optionalen Parametern finden sich an entsprechender Stelle im Code Snippet.
<?PHP
$strImageDestination = './path/to/img/' . $_GET['d'];
$strImageWatermark = './path/to/watermark/' . $_GET['w'];
/*
* Transparenz des Wasserzeichens in Prozent (0 - 100).
* 0 = Keine Transparenz.
* 100 = Voellige Transparenz.
*
* Standard 65%
*/
$iTransparency = 65;
if ( !empty ( $_GET['t'] ) )
{
$iTransparency = $_GET['t'];
}
/*
* Bildquallitaet des Ausgabebilds in Prozent (0 - 100).
* Hat nur Auswirkungen bei Ausgabeformat 2.
*
* Standard = 80%
*/
$iQuality = 80;
if ( !empty ( $_GET['q'] ) )
{
$iQuality = $_GET['q'];
}
list ( $iDestinationWidth, $iDestinationHeight,
$iDestinationType ) = getimagesize ( $strImageDestination );
list ( $iWatermarkWidth, $iWatermarkHeight,
$iWatermarkType ) = getimagesize ( $strImageWatermark );
switch ( $iDestinationType )
{
case 1:
$rDestination = imagecreatefromgif ( $strImageDestination );
break;
case 2:
$rDestination = imagecreatefromjpeg ( $strImageDestination );
break;
case 3:
$rDestination = imagecreatefrompng ( $strImageDestination );
}
switch ( $iWatermarkType )
{
case 1:
$rWatermark = imagecreatefromgif ( $strImageWatermark );
break;
case 2:
$rWatermark = imagecreatefromjpeg ( $strImageWatermark );
break;
case 3:
$rWatermark = imagecreatefrompng ( $strImageWatermark );
}
/*
* Position des Wasserzeichens (1 - 5).
* 1 = Oben links.
* 2 = Oben rechts.
* 3 = Unten links.
* 4 = Unten rechts
* 5 = Horizontal/vertikal zentriert.
*
* Standard = 4
*/
switch ( $_GET['p'] )
{
case 1:
$iPositionX = 0;
$iPositionY = 0;
break;
case 2:
$iPositionX = $iDestinationWidth - $iWatermarkWidth;
$iPositionY = 0;
break;
case 3:
$iPositionX = 0;
$iPositionY = $iDestinationHeight - $iWatermarkHeight;
break;
case 4:
default:
$iPositionX = $iDestinationWidth - $iWatermarkWidth;
$iPositionY = $iDestinationHeight - $iWatermarkHeight;
break;
case 5:
$iPositionX = ceil ( ( $iDestinationWidth / 2 ) );
$iPositionX -= ceil ( ( $iWatermarkWidth / 2 ) );
$iPositionY = ceil ( ( $iDestinationHeight / 2 ) );
$iPositionY -= ceil ( ( $iWatermarkHeight / 2 ) );
}
$iTransparency = 100 - $iTransparency;
imagecopymerge ( $rDestination, $rWatermark, $iPositionX,
$iPositionY, 0, 0, $iWatermarkWidth,
$iWatermarkHeight, $iTransparency );
/*
* Ausgabeformat (1 - 3):
* 1 = GIF-Format
* 2 = JPEG-Format
* 3 = PNG-Format
*
* Standard = 3
*/
switch ( $_GET['r'] )
{
case 1:
header ( 'content-type: image/gif' );
imagegif ( $rDestination );
break;
case 2:
header ( 'content-type: image/jpeg' );
imagejpeg ( $rDestination, '', $iQuality );
break;
case 3:
default:
header ( 'content-type: image/png' );
imagepng ( $rDestination );
}
imagedestroy ( $rDestination );
imagedestroy ( $rWatermark );
?>
|
Anwendungsbeispiel
<html>
<head>
<title>
BEISPIEL: Wasserzeichen
</title>
</head>
<body>
Bild mit Wasserzeichen:<br />
<br />
<img src="setWatermark.php?d=picture.jpg&w=watermark.gif&p=5" />
</body>
</html>
|
Zielbild: picture.jpg
Wasserzeichen: watermark.gif
Ausgabebeispiel: Browseransicht
|
|
|
|
|
|