将 php 脚本的图像输出保存为文件

Posted

技术标签:

【中文标题】将 php 脚本的图像输出保存为文件【英文标题】:Save image output from php script as file 【发布时间】:2016-10-14 12:43:39 【问题描述】:

我尝试让一个 php 脚本将生成的图像输出为 .jpg 文件:

$url = 'http://www.photopost.com/photopost/showfull.php?photo=7541';
file_put_contents('image.jpg',file_get_contents($url));
$page = file_get_contents($url);
echo $page; 

回显在浏览器中显示正确的图像。 但 image.jpg 没有保存。

我怎样才能做到这一点?

【问题讨论】:

我认为你需要设置标题。 header('Content-Type: image/jpeg');。关注这个php.net/manual/en/function.imagejpeg.php url ini 设置检查 echo ini_get('allow_url_fopen'); $url = "domain.com/showphoto.php?photo=10" 在 url 中找不到图片 $url = 'photopost.com/photopost/showfull.php?photo=7541'; ini_get('allow_url_fopen');显示:1 【参考方案1】:

您需要输出具有正确 MIME 类型的 Content-Type 标头,以便浏览器能够了解服务器正在发送的文件类型。

header('Content-Type: image/jpeg');

有关有效 MIME 类型的列表,请参阅 http://php.net/manual/en/function.header.php 和 https://www.sitepoint.com/web-foundations/mime-types-complete-list/。

【讨论】:

我试过了:代码 您是否指定了保存图片的路径? (即file_put_contents('/tmp/image.jpg', $data);)Web 服务器可能无法写入默认路径。 Web 服务器/PHP 进程可以写入该路径吗?您需要提供错误信息以便我们提供帮助。【参考方案2】:

使用 curl 从 url 获取图像:-

$profile_Image = 'http://www.photopost.com/photopost/showfull.php?photo=7541'; //image url
$userImage = 'myimg.jpg'; // renaming image
$path = '';  // your saving path
$ch = curl_init($profile_Image);
$fp = fopen($path . $userImage, 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = curl_exec($ch);
curl_close($ch);
fclose($fp);

使用 file_get_contents 从 url 获取图片:-

$profile_Image = 'http://www.photopost.com/photopost/showfull.php?photo=7541'; //image url
$userImage = 'myimg.jpg'; // renaming image
$path = '';  // your saving path
$thumb_image = file_get_contents($profile_Image);
if ($http_response_header != NULL) 
    $thumb_file = $path . $userImage;
    file_put_contents($thumb_file, $thumb_image);

【讨论】:

您好 Jinandra,谢谢您的帮助。此代码下载一个文件,我的电脑上的机器人无法识别为有效的 jpg!【参考方案3】:

更改您的网址

http://www.photopost.com/photopost/showfull.php?photo=7541 //html document

http://www.photopost.com/photopost/watermark.php?file=7541 //downloadable url

然后使用其他答案中的代码或使用imagecreatefromjpeg http://php.net/manual/en/function.imagecreatefromjpeg.php

【讨论】:

谢谢戴夫,这行得通! (由于声誉低,我的投票尚不可见)

以上是关于将 php 脚本的图像输出保存为文件的主要内容,如果未能解决你的问题,请参考以下文章

数据库的图像输出

php中的图像水印

我可以使用 PHP 仅将输出的可见元素保存为新文件吗?

使用 fsockopen 时将 php 输出保存到变量中

如何与 PHP 并行进行 cURL 下载和输出?

Linux Shell 脚本:将命令输出保存在变量/文件中?