【问题标题】:PHP save image file [duplicate]PHP保存图像文件[重复]
【发布时间】:2011-04-11 05:16:44
【问题描述】:

可能重复:
Saving image from PHP URL

我有一个图像作为来自第 3 方 web 拇指站点 (IE http://images.websnapr.com/?size=size&key=Y64Q44QLt12u&url=http://google.com) 的 url 链接我想做的是运行一个脚本,该脚本使用 php 获取图像并将其保存在我的服务器上的目录中。这个怎么做?我会使用文件写入吗?

【问题讨论】:

标签: php


【解决方案1】:

注意:如果可能,您应该使用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(默认情况下)

【讨论】:

  • 这仅在allow_url_fopen 为真时有效。
  • @Ólafur Waage 当然,但出于同样的原因,cURL 仅在 curl 扩展可用并在您的系统上启用时才有效。
  • 这迫使 GD 无缘无故地对图像进行解码和编码。这也意味着它是 有损 的,并且 imagejpeg 默认只使用 75% 的质量。 OP 要求的所有内容都是下载(逐位复制)。
【解决方案2】:

不需要像其他人建议的那样创建 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。

【讨论】:

  • 图片格式不是jpg怎么办。部分正确答案
  • 对于 png
猜你喜欢
  • 2011-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-25
  • 2012-01-13
  • 2014-07-31
  • 2018-03-26
相关资源
最近更新 更多