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()
<?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.