2

このコードを使用して、背景が透明なテキストが書き込まれた画像を作成しています。

 <?php
 // Set the content-type
 header('Content-Type: image/gif');

 // Create the image
 $im = imagecreatetruecolor(400, 150);

 // Create some colors

 $black = imagecolorallocate($im, 0, 0, 0);
 $acolor = imagecolorallocate($im, 153, 204, 153);
 imagecolortransparent($im, $black);

 // The text to draw
 $text = 'Testing...';
 // Replace path by your own font path
 $font = 'arial.ttf';

 // Add the text
 imagettftext($im, 50, 0, 10, 100, $acolor, $font, $text);

 // Using imagegif()
 imagegif($im,"img.gif");
 imagedestroy($im);
 ?>

しかし、img.gif で書かれたテキストには、アルファベット ('e,s,n,g') の境界に不要な色 (黒) が含まれています。どうしたらあの色に仕上がるのでしょうか。 生成された画像は arial
フォントのダウンロードサイトです

4

1 に答える 1

2

GIF形式はアルファ透明度を処理できません。100%透明(=非表示)または100%不透明(=表示)のピクセルのみを持つことができます。

あなたのテキストはアンチエイリアス処理されたソフトエッジを持っているようです。

これらのエッジは100%透明ではありませんが、100%不透明でもありません。前景と背景が混在しています。それはそれらを柔らかく見せます。

GIF形式ではこれらのニュアンスを処理できないため、ライブラリは緑と黒の混合を使用して「弱い」緑をシミュレートします。

PNG形式を使用する場合、問題は解決するはずです。PNGはアルファ透明度をサポートしています。IE6をサポートする必要がある場合は、調査する必要のある問題がいくつかありますが、他のすべてのブラウザーでは、これはすぐに正常に機能します。

于 2011-12-10T17:42:10.717 に答える