2011-12-14 3 views
7

Все примеры, которые я нашел в Интернете, похоже, создают png с текстом из существующего png. Можно ли создать прозрачный png с нуля, а затем добавить текст?Создайте прозрачный png с текстом с нуля в php

Код Айв получил до сих пор следующим образом (но это не работает. Просто выводит пустой источник изображения)

<?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); 
?> 
Смежные вопросы