我正在使用Google Charts服务生成一些QR代码,我以后需要在PHP脚本中操作(例如旋转,缩放)并与其他图像合并以生成最终图像。
如何正确地将这样的资源(从URL)加载到PHP脚本中,以允许我操作它?
示例网址为:https://chart.googleapis.com/chart?cht=qr&chs=500x500&chl=xghsdfgsdfg&choe=UTF-8&chld=L|0
我目前有以下代码使用cURL检索图像:
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;
}
但是当我像这样使用它时:
$image = imagecreatefrompng(getImage("https://chart.googleapis.com/chart?cht=qr&chs=500x500&chl=xghsdfgsdfg&choe=UTF-8&chld=L|0"));
返回以下错误:
Warning: imagecreatefrompng(‰PNG ) [function.imagecreatefrompng]: failed to open stream: No such file or directory in /home/picselbc/public_html/projects/cakemyface/preview.php on line 383
https://chart.googleapis.com/chart?cht=qr&chs=500x500&chl=xghsdfgsdfg&choe=UTF-8&chld=L|0
答案 0 :(得分:3)
您需要的是imagecreatefrompng()
而不是imagecreatefromstring()
,因为前者需要文件名而不是文件内容。
答案 1 :(得分:1)
这对我有用
$image = imagecreatefromstring(file_get_contents('http://chart.googleapis.com/chart?cht=qr&chs=500x500&chl=xghsdfgsdfg&choe=UTF-8&chld=L|0'));
header('Content-Type: image/png');
imagepng($image);
注意:我必须使用http而不是https,因为我没有在本地服务器上设置ssl。