2011-12-14 7 views
7

私がウェブ上で見つけたすべての例は、既存のpngのテキストを含むpngを作成するようです。透明なPNGを最初から作成してテキストを追加することは可能ですか?テキストで透明なpngを作成します。

コードIVEは、これまでに以下のしまった(しかし、それは仕事をdoesntの。ちょうど空白の映像ソースを出力)

<?php 
    $width = 150; 
    $height = 30; 
    $text = "My Text"; 
    $fontsize = 5; 

    $im = imagecreate($width, $height); 
    $transcolor = imagecolortransparent($im); 

    imagestring($im, $fontsize, 0, 0, $text, $transcolor); 

    header('Content-type: image/png'); 
    imagepng($im); 
    imagedestroy($im); 
?> 
+0

http://stackoverflow.com/questions/6109832/php-gd-create-a-transparent-png-image – Jauzsika

答えて

14
<?php 
    $font = 25; 
    $string = 'My Text'; 
    $im = @imagecreatetruecolor(strlen($string) * $font/1.5, $font); 
    imagesavealpha($im, true); 
    imagealphablending($im, false); 
    $white = imagecolorallocatealpha($im, 255, 255, 255, 127); 
    imagefill($im, 0, 0, $white); 
    $lime = imagecolorallocate($im, 204, 255, 51); 
    imagettftext($im, $font, 0, 0, $font - 3, $lime, "droid_mono.ttf", $string); 
    header("Content-type: image/png"); 
    imagepng($im); 
    imagedestroy($im); 
?> 

利用imagestring代わりのimagettftextカスタムフォントをしたくない場合。

4

元のコードに基づいた解決策は次のとおりです。

<?php 
    $width = 640; 
    $height = 480; 
    $text = "My Text"; 
    $fontsize = 5; 

    $img = imagecreate($width, $height); 

    // Transparent background 
    $black = imagecolorallocate($img, 0, 0, 0); 
    imagecolortransparent($img, $black); 

    // Red text 
    $red = imagecolorallocate($img, 255, 0, 0); 
    imagestring($img, $fontsize, 0, 0, $text, $red); 

    header('Content-type: image/png'); 
    imagepng($img); 
    imagedestroy($img); 
?> 
関連する問題