2010-09-11 162 views
22

可能重复:
Saving image from PHP URL using PHPPHP保存图像文件

您好我有一个形象来自第三方网站的拇指网站(IE http://images.websnapr.com/?size=size&key=Y64Q44QLt12u&url=http://google.com)的URL链接,我想什么做是运行一个脚本,采取图像,并保存在我的服务器上使用PHP的目录。任何人都可以用正确的方式指出我这样做吗?我会使用文件写入?

+0

对于我的回答对你的工作PHP的安装必须与GD库编译(大部分是)...... – 2010-09-11 23:18:12

+0

参见[ 使用保存文件卷曲 (http://stackoverflow.com/questions/1006604/saving -file-使用卷曲/ 1006629#1006629)。 – 2010-09-11 23:20:00

+0

下面是一个教程,向您展示如何以两种方式完成此操作。 http://edmondscommerce.github.io/php/curl/php-save-images-using-curl.html – MZaragoza 2015-04-21 01:35:40

回答

47

无需创建一个GD资源,为别人推荐。

$input = 'http://images.websnapr.com/?size=size&key=Y64Q44QLt12u&url=http://google.com'; 
$output = 'google.com.jpg'; 
file_put_contents($output, file_get_contents($input)); 

注意:此解决方案仅适用于允许fopen访问URL的情况。如果上述解决方案不起作用,则必须使用cURL。

+1

+1不需要GD – timdev 2010-09-11 23:21:51

+0

那是多高效。 – 2011-02-03 18:32:22

17

注意:如果可能,应该使用accepted answer。这比我的好。

GD library很容易。

它是建立在通常情况下,你可能有它(使用phpinfo()检查)

$image = imagecreatefromjpeg("http://images.websnapr.com/?size=size&key=Y64Q44QLt12u&url=http://google.com"); 

imagejpeg($image, "folder/file.jpg"); 

以上回答是更好的(快)在大多数情况下,但与GD你也可以修改它以某种形式(例如裁剪)。

$image = imagecreatefromjpeg("http://images.websnapr.com/?size=size&key=Y64Q44QLt12u&url=http://google.com"); 
imagecopy($image, $image, 0, 140, 0, 0, imagesx($image), imagesy($image)); 
imagejpeg($image, "folder/file.jpg"); 

这只能如果allow_url_fopentrue(这是默认设置)

+0

这只适用于allow_url_fopen为true的情况。 – 2010-09-11 23:17:50

+0

@Ólafur确信,但同样的道理,只有curl扩展在系统上可用并启用时,cURL才能正常工作。 – JAL 2010-09-11 23:20:03

+3

这是强制GD无故解码和编码图像。这也意味着它*有损*,imagejpeg默认只使用75%的质量。所有OP要求的是下载(一点点拷贝)。 – 2010-09-11 23:32:11