png mit alpha-Kanal erzeugen
png mit alpha-Kanal erzeugen
am 08.09.2006 20:49:39 von Simon Remppis
Hi,
Um einzelne Überschriften auf einer Website auch in
nicht-Standardschriftarten darstellen zu können nutze ich mit php die
gb-library (bundled, 2.0.28 compatible) um die Überschriften in Bilder zu
verwandeln. Der wesentliche Teil des Scripts dafür sieht so aus:
$font = Schriftart.ttf';
$size = $_GET['size'];
$text = $_GET['text'];
$boxsize = imagettfbbox($size, 0, $font, $text);
$width = $boxsize[2] + $boxsize[0]+1;
$height = abs($boxsize[1]) + abs($boxsize[7]);
$image = imagecreatetruecolor ($width, $height);
$background= imagecolorallocate($image, 255, 255, 255);
$color = imagecolorallocate($image, 0, 0, 0);
imagettftext($image, $size, 0, 0, abs($boxsize[5]), $color, $font, $text);
imagepng($image);
Das ganze funktioniert wunderbar, der Text erscheint so schwarz auf weiss.
Allerdings würde ich den Text später gerne auf einem beliebigen Hintergrund
darstellen können und brauche dazu ein Bild mit einem Transparenten
Hinrergrund. Wenn ich mit imageColorTransparent() die Hintergrunddfarbe
Transparent mache wirkt der Rand der Buchstaben unsauber da einzelne Pixel
am Rand eben nicht wie gewünscht halbtransparent sondern grau dargestellt
werden.
24bit pngs haben ja eigentlich einen Alpha-Kanal, mit dem ich die Pixel
wirklich halbtransparent kriege. Kann ich diese Möglichkeit auch mit php/gd
nutzen?
Vielen Dank,
Simon
Re: png mit alpha-Kanal erzeugen
am 08.09.2006 23:37:56 von Ralf Zschemisch
Am Fri, 08 Sep 2006 20:49:39 +0200 schrieb Simon Remppis:
Hallo,
> 24bit pngs haben ja eigentlich einen Alpha-Kanal, mit dem ich die Pixel
> wirklich halbtransparent kriege. Kann ich diese Möglichkeit auch mit
> php/gd nutzen?
Evtl. hilft
http://www.php.net/manual/en/function.imagesavealpha.php
$im = imagecreatefrompng("a.png");
imagesavealpha($im,true);
hth
r23
--
http://www.fineart.myoos.de/
Re: png mit alpha-Kanal erzeugen
am 09.09.2006 09:37:24 von Simon Remppis
Hallo Ralf,
"Ralf Zschemisch" schrieb:
> Evtl. hilft
> http://www.php.net/manual/en/function.imagesavealpha.php
Vielen Dank für die Antwort.
Ich habe mein script jetzt mit dieser Funktion modifiziert:
$image = imagecreatetruecolor ($width, $height);
imagealphablending($image, FALSE);
imagesavealpha($image, TRUE);
Leider ist das Ergebniss noch nicht ganz das gewünschte. Anscheinend wird um
jeden Buchstaben nur ein kleiner Kasten transparent während der Rest des
Hintergrunds Schwarz wird. Das ganze sieht dann so aus:
http://workflow.gopublic-solutions.de/test.html
Kann mir jemand sagen, wie ich den ganzen Hintergrund transparent kriege?
Vielen Dank,
Simon
Re: png mit alpha-Kanal erzeugen
am 09.09.2006 10:09:06 von Ralf Zschemisch
Am Sat, 09 Sep 2006 09:37:24 +0200 schrieb Simon Remppis:
> $image = imagecreatetruecolor ($width, $height);
> imagealphablending($image, FALSE);
> imagesavealpha($image, TRUE);
$image = imageCreateTrueColor($width, $height);
imageSaveAlpha($image, true);
ImageAlphaBlending($image, false);
$tlo = imagecolorallocatealpha($image, 220, 220, 220, 127);
imagefill($image, 0, 0, $tlo);
> Das ganze sieht dann so aus:
> http://workflow.gopublic-solutions.de/test.html Kann mir jemand sagen, wie
> ich den ganzen Hintergrund transparent kriege?
http://www.php.net/manual/en/function.imagealphablending.php #53548
hth
r23
--
http://fineart.myoos.de/
Re: png mit alpha-Kanal erzeugen
am 09.09.2006 10:25:46 von Simon Remppis
"Ralf Zschemisch" schrieb ?
> $image = imageCreateTrueColor($width, $height);
> imageSaveAlpha($image, true);
> ImageAlphaBlending($image, false);
>
> $tlo = imagecolorallocatealpha($image, 220, 220, 220, 127);
> imagefill($image, 0, 0, $tlo);
>
Vielen Dank,
So funktioniert's!