使用file_get_contents从url获取图像

时间:2012-09-25 09:30:23

标签: php loops header logic file-get-contents

这是我的PHP代码,它只获取9个中的第一个图像,虽然当我手动检查所有9个图像URL形成的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;
}

5 个答案:

答案 0 :(得分:4)

  

@ 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);
    }
?>

答案 1 :(得分:1)

这是因为不可能像这样连接JPEG图像。客户端将读取第一个图像并将其他图像视为尾随垃圾。

如果您想制作一张大图片,请使用GDimagick

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

或者,只需完成一次工作并手动创建一个精灵。

答案 2 :(得分:0)

设置内容长度

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

答案 3 :(得分:0)

在@ 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);
}

答案 4 :(得分:0)

  for ($i = 2 ; $i <= 10; $i++) {
        $imageName = "rate-bar-bg-" . $i . ".jpg";
        copy("http://www.lafourchette.com/p-3.3.0/default/" . $imageName,$imageName);
}