3

我正在使用 Google Charts 服务生成一些二维码,之后我需要在 PHP 脚本中操作(例如旋转、缩放)并与其他图像合并以生成最终图像。

如何正确地将这样的资源(从 URL)加载到 PHP 脚本中,以允许我操作它的方式?

示例 URL 为: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
4

2 回答 2

3

您需要的不是imagecreatefrompng()is imagecreatefromstring(),因为前者需要文件名而不是文件内容本身。

于 2012-11-24T07:23:45.330 回答
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。

于 2012-11-24T07:28:54.563 回答