我有一个简单的服务,它使用通过 URL 传递的参数生成任何文本的 PNG 图像。参数之一是文本本身,其余是“字体”、“颜色”、“字体粗细”等。
生成以下PNG:
在另一个脚本中,我使用 cURL 来检索此服务生成的此类资源,然后使用 将其转换为图像imagecreatefromstring()
,因为我需要对其进行操作(例如旋转和缩放),然后将其与其他一些图片。为此,我使用以下代码:
function getImage($url){
$ch = curl_init ($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$resource = curl_exec($ch);
curl_close ($ch);
return $resource;
}
$url = "http://picselbocs.com/projects/cakemyface/text.php?params=Verdana%7C18%7Cbold%7Cnormal%7Ccenter%7C%23cc0000%7Cunderline&text=Hello%20world!";
$string = getImage($url);
$image = imagecreatefromstring($string);
// Send the image to the client
header("Content-type: image/png");
header("Content-disposition: inline; filename=mytext.png");
imagepng($image);
imagedestroy($image);
此处提供了相同的代码,您可以在其中查看输出。问题是上面的代码输出了一些奇怪的 PNG,其中所有的字母都是填充的矩形,如下例所示:
为什么会发生这种情况,我该如何解决?
另一个奇怪的事情是,如果我将文本图像的 URL 替换为例如使用 Google Charts 工具生成的 QR 码的链接(例如QR 码),结果就是它应该是的......