将图像保存到文件

时间:2013-06-05 01:48:02

标签: php charts

我正在使用来自网址的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);

然而,两者似乎都会破坏图像,图像最终无效。

有什么想法吗?感谢

2 个答案:

答案 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);
?>