使用 file_get_contents 从 url 获取图像

Posted

技术标签:

【中文标题】使用 file_get_contents 从 url 获取图像【英文标题】:Fetch image from url using file_get_contents 【发布时间】:2012-09-16 19:11:33 【问题描述】:

这是我的 php 代码,它只获取 9 个图像中的第一个图像,尽管当我手动检查 URL 时,所有 9 个图像 URL 都正确形成,我也用 CURL 尝试了此代码,但循环不起作用,请告诉我我做错了什么?

<?php

for($i=2 ; $i <= 10 ; $i++ )
header('Content-type: image/jpeg;');
$url = "http://www.lafourchette.com/p-3.3.0/default/rate-bar-bg-".$i.".jpg";
$mycontent = file_get_contents($url);
echo $mycontent;

【问题讨论】:

【参考方案1】:

@h2ooooooo 其实兄弟我不是在寻找一张图片...我只是想将这 9 张图片保存在一个文件夹中

<?php
    for ($i = 2 ; $i <= 10; $i++) 
        $imageName = "rate-bar-bg-" . $i . ".jpg";
        $imageContent = file_get_contents("http://www.lafourchette.com/p-3.3.0/default/" . $imageName);
        file_put_contents($imageName, $imageContent);
    
?>

【讨论】:

【参考方案2】:

这是因为无法像这样连接 JPEG 图像。客户端将读取第一张图片,并将其他图片视为尾随垃圾。

如果你想创建一个大图像,你应该使用GDimagick

或者,您可以在页面上创建多个图像,每个图像都指向rate-bar-bg-2.jpg10。这可能会更有效,除非您有充分的理由不直接链接到该网站。

或者,只需执行一次并手动创建精灵。

【讨论】:

那我怎样才能让它在单页上显示所有 9 张图片?? @swapnesh 你不能用 9 个&lt;img&gt; 元素制作一个 html 文件,这些元素指的是 PHP 文件一张一张地输出这些图像吗? @h2ooooooo 即使我可以通过稍微更改 URL 来保存所有 9 张图片.....它不是我想要的......我认为如果你提供一些代码而不是指向我会更好我能做什么或不能做什么(对不起,我说话有点粗鲁) @swapnesh 那么你应该更好地指定你的答案。这个答案让你朝着 imagick 的 GD 方向前进,即使有文档链接。如果您想将所有这些图像制作成一张大图,那么这就是您要采用的方法。 @h2ooooooo 实际上兄弟我不是在寻找单个图像...我只想将这 9 个图像保存在一个文件夹中【参考方案3】:

在@h2ooooooo 的帮助下,我想出了解决方案---

<?php

for($i=2 ; $i <= 10 ; $i++ )
$filename = "rate-bar-bg-".$i.".jpg";
header('Content-type: image/jpeg;');
$url = "http://www.lafourchette.com/p-3.3.0/default/rate-bar-bg-".$i.".jpg";
$fileContent = file_get_contents($url);
file_put_contents($filename, $fileContent);

【讨论】:

虽然它并没有完全满足 OP 的要求,但它确实使用 URL 的内容制作了一个文件。如果您使用.html 扩展名命名它,它将作为网页的副本打开 - 但请确保原件中没有任何讨厌的脚本!然而,它不是图像。到目前为止,我只有 PDFCrowd 来制作图像,但我正在处理它...html2img next...【参考方案4】:

同时设置内容长度

header('Content-Length: ' . $size);

【讨论】:

【参考方案5】:
  for ($i = 2 ; $i <= 10; $i++) 
        $imageName = "rate-bar-bg-" . $i . ".jpg";
        copy("http://www.lafourchette.com/p-3.3.0/default/" . $imageName,$imageName);

【讨论】:

以上是关于使用 file_get_contents 从 url 获取图像的主要内容,如果未能解决你的问题,请参考以下文章

使用带参数的 file_get_contents 从 PHP 获取请求

file_get_contents() 从 url 而不是 json 返回原始数据 [重复]

使用 readfile() 或 file_get_contents() 从相关文件夹中检索图像文件不起作用

file_get_contents() 不工作

使用 file_get_contents 并使用内容的特定部分

从本地 LAMP 访问 SoapClient 和 file_get_contents