PHP:使用透明度将文本更改为PNG图像的功能

时间:2014-01-12 21:08:49

标签: php gd

我正在尝试将一段文字更改为图片。我无法弄清楚我的代码有什么问题,以及如何使其透明。以下是我到目前为止的情况:

<?PHP 
function fsrep_imageaddress($address, $listingid) {
    $font_size = 4; 
    $width  = imagefontwidth($font_size)*strlen($address); 
    $height = imagefontheight($font_size); 
    $img = imagecreate($width,$height); 
    $bg    = imagecolorallocate($img, 25, 25, 25); 
    $color = imagecolorallocate($img, 255, 255, 255); 
    $len = strlen($address); 
    $ypos = 0; 
    for($i=0;$i<$len;$i++){ 
        $xpos = $i * imagefontwidth($font_size); 
        imagechar($img, $font_size, $xpos, $ypos, $address, $color); 
        $address = substr($address, 1);    

    } 
    imagepng($img, ABSPATH.'wp-content/uploads/fsrep/houses/address-'.$listingid.'.png',100);
    imagedestroy($img);
}   

fsrep_imageaddress(Just Testing, 12)
?>

1 个答案:

答案 0 :(得分:1)

为什么不起作用?

如果你查看错误日志,你会发现你需要在函数调用中将“Just Testing”放在引号中(感谢@scrowler!)。然后你会得到imagepng质量等级为0(无压缩)到9(最大)的错误。你有100个!在这里,我将其设置为5(中等压缩)。

imagepng($img, ABSPATH.'wp-content/uploads/fsrep/houses/address-'.$listingid.'.png',5);

如何设置透明背景?

调色板图像(即使用imagecreate创建的图像)有一个奇怪的事情。分配的第一个颜色设置为背景,不能透明 - 因此您需要创建一个虚拟颜色,然后将其转换为透明颜色。

// after this line
$bg = imagecolorallocate($img, 25, 25, 25); 
// add this
imagecolortransparent($img, $bg);

<强>结果

我进行了这些更改,并将文本更改为红色(255,0,0)以提高可读性并获得此信息:

Result of code changes