3

在其他站点的许可下,我应该定期下载托管在另一个站点上的图像,并将其包含在我们站点上的网络摄像头照片集合中,并带有指向贡献站点的外部链接。

这对于任何其他站点都没有任何问题,但是对于这个特定站点,我无法打开图像来调整它的大小并将其保存到我们的服务器。这不是盗链问题,因为我可以<img src="http://THEIRIMAGE />在我们网站的页面上创建一个普通的 ole' 并且它工作正常。

我已经尝试过$img = new Imagick($sourceFilePath)像其他所有方法一样直接使用,以及尝试使用 PHP 的副本并尝试使用 cURL 复制图像,但是这样做时,页面只是超时而根本没有结果。

这是有问题的图像:http: //island-alpaca.selfip.com :10202/SnapshotJPEG?Resolution=640x480&Quality=Standard

就像我说的那样,我可以用其他几个网络摄像头做这种事情,但它不适用于这个,我不知道为什么它不能。任何帮助将不胜感激。

谢谢你。

4

2 回答 2

1

为了减少带宽和服务器负载,某些站点会阻止某些机器人访问其内容。您的 cURL 请求需要更接近地模仿实际的浏览器,其中包括(通常)引用者、用户代理等。也可能是存在重定向并且您没有告诉 cURL 遵循重定向。

尝试设置更多这样的选项:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_ENCODING , "gzip");
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'PHP');
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);

如果这不起作用,请从实际浏览器中获取用户代理并将其放入其中,看看是否会有所不同。

于 2012-10-04T18:50:32.483 回答
0

尝试使用file_get_contents()

例如:

$url = 'http://island-alpaca.selfip.com:10202/SnapshotJPEG?Resolution=640x480&Quality=Standard';
$outputfile = "tmp/image" . date("Y-m-d_H.i.s");
$cmd = "wget -q \"$url\" -O $outputfile";
exec($cmd);
$temp_img = file_get_contents($outputfile);
$img = new Imagick($temp_img);

你能试试这个然后回复我吗?

于 2012-10-04T18:51:53.750 回答