Teil von  SELFPHP   Teil von  Code Snippets / PHP / Images
  +++ SELFPHP CronJob-Service :: Jetzt auch als Professional-Version verfügbar! +++



:: 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!

Vorname: 
Name:
E-Mail:
 
 

:: 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 ) );
      
$iPositionX -= ceil ( ( $iWatermarkWidth ) );

      
$iPositionY ceil ( ( $iDestinationHeight ) );
      
$iPositionY -= ceil ( ( $iWatermarkHeight ) );
  }

  
$iTransparency 100 $iTransparency;

  
imagecopymerge $rDestination$rWatermark$iPositionX,
                   
$iPositionY00$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







 




:: Premium-Partner ::

Webhosting/Serverlösungen


Premium-Partner MECO Systemhaus GmbH & Co. KG
Premium-Partner PSW GROUP GmbH & Co. KG
Premium-Partner BPI-Systeme
Premium-Partner Pixel X
Premium-Partner
 

:: SELFPHP Sponsoren ::


Microsoft Deutschland GmbH
twosteps.net - ...Premium-Webhosting
Sedo - Bei uns wird PHP großgeschrieben
hostfactory.ch - OptimaNet Schweiz AG
ZEND - The PHP Company
Kaspersky Labs
HighText iBusiness
SELFPHP Sponsoren
 

Qozido


© 2001-2009 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt