Создать прозрачный png с текстом с нуля в php - PullRequest
7 голосов
/ 14 декабря 2011

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

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

<?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);
?>

Ответы [ 2 ]

16 голосов
/ 14 декабря 2011
<?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 голосов
/ 14 декабря 2011

Вот решение, основанное на вашем исходном коде.

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