我正在使用来自网址的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);
然而,两者似乎都会破坏图像,图像最终无效。
有什么想法吗?感谢
答案 0 :(得分: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! )
如果您想要另一种保存文件的方法,我建议如下。如果目标网址不是图片,则会失败。
$im = imagecreatefrompng($theurl);
imagepng ($im, 'mypic.png');
imagedestroy($im);
答案 1 :(得分: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);
?>