我正在尝试将一段文字更改为图片。我无法弄清楚我的代码有什么问题,以及如何使其透明。以下是我到目前为止的情况:
<?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)
?>
答案 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)以提高可读性并获得此信息: