1

我正在使用来自 URL 的 Google 图表,例如:

http://chart.apis.google.com/chart?cht=lc&chs=250x100&chds=0,20 ...

如何使用 PHP 保存图像。我努力了:

$image = file_get_contents($lineChart->getUrl());
file_put_contents('playerchart.png', $image);

$ch = curl_init($lineChart->getUrl());
$fp = fopen('playerchart.png', 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);

但是,两者似乎都损坏了图像,并且图像最终无法正常工作。

有任何想法吗?谢谢

4

2 回答 2

2

我测试了以下代码,我得到了一个可以在预览中打开的正确 PNG。

$image = file_get_contents('http://chart.apis.google.com/chart?cht=lc&chs=250x10
0&chds=0,20');
file_put_contents('playerchart.png', $image);

鉴于上述工作正常,我想说 $lineChart->getURL() 很有可能存在问题,并且它可能不会完全按照您的预期返回。(我会说将其打印到屏幕上并仔细检查,可能还有其他字符或其中的空格等。您要保存到磁盘的“图像”实际上可能是 404 页面的 HTML! )

如果您想要另一种保存文件的方法,我会建议以下方法。如果目标 URL 不是图像,这将失败。

$im = imagecreatefrompng($theurl);
imagepng ($im, 'mypic.png');
imagedestroy($im);
于 2013-06-05T01:56:09.257 回答
0

这对我有用:

<?php
$img = file_get_contents("http://chart.apis.google.com/chart?cht=lc&chs=250x100&chds=0,20");
file_put_contents("test.png", $img);
?>
于 2013-06-05T01:54:48.823 回答