Teil von  SELFPHP   Teil von  Code Snippets / PHP / Images
Professional CronJob-Service

Suche

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: SELFPHP Forum ::

Fragen rund um die Themen PHP?
In über 130.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

SELFPHP ist Shopware Solution Partner
Shopware ist ein vielfach ausgezeichnetes Onlineshop-System der shopware AG, das auf PHP. Zend Framework und SQL basiert.
SELFPHP unterstützt Sie als Shopware Solution Partner bei der Konzeption, Programmierung und Realisierung Ihres Onlineshops und passt Shopware bei Bedarf an Ihre Unternehmensbedürfnisse an. Weitere Informationen




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

Pixel X weitere Premium-Partner
 

:: SELFPHP Sponsor ::

Zend Technologies GmbH weitere Sponsoren
 


:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Webhosting/Serverlösungen

Suchen Sie den für Sie passenden IT-Dienstleister für Ihr Webhosting-Paket oder Ihre Serverlösung?

Sie sind nur ein paar Klicks davon entfernt!


 

Ausgewählter Tipp im Bereich PHP-Skripte


Umrechnung Byte/Kilobyte/Megabyte – Byte/Kibibyte/Mebibyte

Weitere interessante Beispiele aus dem SELFPHP Kochbuch finden Sie im Bereich PHP-Skripte
 

SELFPHP Code Snippet


Kleinsten Wert einer Tabellenspalte auslesen

Weitere interessante Code Snippets finden Sie auf SELFPHP im Bereich PHP Code Snippets
 
© 2001-2016 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt
© 2007-2016 E-Mail PHP Code Snippets - Daniel Kreßler, d.kressler@selfphp.de