Bitte warten...

PHP: Grafiken mit Transparenz

Mit den PHP-Grafikfunktionen ist es möglich, Grafiken mit transparenten Farben zu erzeugen, so dass z. B. der Hintergrund einer Grafik durchschimmert. Folgende Funktionen sind hierbei wichtig:

imagecolorallocatealpha()
imagealphablending()
imagesavealpha()

Code kopieren
<?php
  if (!$_GET['image']) {
    header("content-type: text/html; charset=utf-8");
    echo "<!DOCTYPE HTML>
<html lang='de'>
  <head>
    <title>Grafik mit Transparenz</title>
    <meta charset='UTF-8'>
    <meta name='robots' content='noindex, nofollow'>
    <style>
      * { margin:0; padding:0; }
      body { background-color:#007acc; }
      p { font-size:36px; text-align:center; margin-top:200px; }
      #image { background-color:#ffffff; width:300px; height:200px; margin:-120px auto 0; }
      img { margin-top:20px; margin-left:-50px; }
    </style>
  </head>
  <body>
    <p>Lorem ipsum dolor sit amet.</p>
    <div id='image'><img src='./index.php?image=250,200,b036b015' alt=''></div>
  </body>
</html>";
  } else {
    function rgba($im, $hex) {
      return imagecolorallocatealpha(
        $im,
        hexdec(substr($hex, 0, 2)),
        hexdec(substr($hex, 2, 2)),
        hexdec(substr($hex, 4, 2)),
        hexdec(substr($hex, 6, 2))
      );
    }
    $p = explode(",", $_GET['image']);
    $width = $p[0]; $height = $p[1];
    $im = @imagecreatetruecolor($width, $height) or die("Cannot initialize new GD image stream!");
    imagealphablending($im, FALSE);
    imagefilledrectangle($im, 0, 0, $width, $height, rgba($im, $p[2]));
    header("content-type: image/png");
    imagesavealpha($im, TRUE);
    imagepng($im);
    imagedestroy($im);
  }
?>

Im oberen Teil des Skripts wird ein HTML-Dokument mit einer Textzeile, einem div-Container mit weißem Hintergrund sowie der Bildreferenz erzeugt.

Die Parameter der Grafik werden in Zeile 20 mit der Query-Variablen image übergeben. Hierbei ist zu beachten, dass zusätzlich zu den Informationen über die RGB-Komponenten der Farbe (b036b0) auch der Transparenzwert (sog. Alphakanal) übergeben wird. Dieser Wert kann zwischen 0 und 127 liegen (hexadezimal 00 bis 7F), wobei 00 keine Transparenz und 7F 100 % Transparenz bedeutet.

PHP Grafik-Beispiel