自动获取由PHP和Query-String屏蔽的图像

时间:2011-01-12 16:37:28

标签: php .net image url query-string

我可以访问一些可以像这样收集的图像:

http://www.example.com/imageGetter.php?a=0001

如果我将查询字符串a更改为0002,我会得到另一张图像。这是成千上万的图像,我试图以编程方式获取图像(通过将它们加载到浏览器中,或者将它们保存到磁盘中)。

问题:如何以编程方式存储图像?

我在这里有两种可能的方式:

1)使用.NET,加载它(作为web请求),解析结果(这是我可以保存的图像,但无法获得真实地址,因为它已收集在运行时,没有链接到我)和保存图像(这将通过.net,使用C#完成)。

2)将其复制到内存(可能在java脚本图像var中)并将其放入< img>标签。我有重复的例程来继续追加< img>标签,所以我只需要将图像加载到< img>。

所有这一切都考虑到我可以访问这些图像,我可以手动保存它们,我只是不想,我想自动保存它们,因为它们经常更换。

如果您有其他解决方法,请随时留下答案,我很乐意尝试一下!

注意:做了一个快速搜索,但没有发现任何类似的问题,但我不完全确定这不是一个骗局,因为我可能不知道具体的条款是什么我想要。如果这是一个骗局,请告诉我,我会删除这个问题。

1 个答案:

答案 0 :(得分:0)

在PHP中。

你可以调整这样的代码来接受所有图像类型:

$remote_img = 'http://www.somwhere.com/images/image.jpg';
$img = imagecreatefromjpeg($remote_img);
$path = 'images/';
imagejpeg($img, $path);

使用php GD库来学习如何接受更多文件类型

另一种方法是使用cURL。

function save_image($img,$fullpath){
    $ch = curl_init ($img);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
    $rawdata=curl_exec($ch);
    curl_close ($ch);
    if(file_exists($fullpath)){
        unlink($fullpath);
    }
    $fp = fopen($fullpath,'x');
    fwrite($fp, $rawdata);
    fclose($fp); 
}