从外部网页获取图像的最快方法是什么


What is the fastest way to get images from external webpage?

我需要一种方法来从一个通用的外部网页中获得最大的5个图像。

我知道,由于跨站点的安全性,我不能只使用ajax(也许我错了)。

所以我必须使用php+javascript。

我刚刚写了这个PHP代码来从外部url:获取所有图像

$html = file_get_contents($link);
$dom = new domDocument;
$dom->loadHTML($html);
$dom->preserveWhiteSpace = false;
$images = $dom->getElementsByTagName('img');
foreach ($images as $image) {
  echo $image->getAttribute('src');
}

那么,现在只获取该页面最大的5张图像的最快方法是什么?

我指的是分辨率最高的图像。

如果你的意思是"最大",比如最大文件大小,那么我认为你已经走上了正轨。您只需要在源文档中找到所有图像,然后可能向图像所在的服务器发出HEAD请求,以便(希望)在不下载文件的情况下从标头中获取文件大小信息。

如果你真正关心的是"最快",你可以使用cURL,它支持"多"并行请求。一旦从请求中获得了头信息,就可以确定5个最大的文件并显示它们的URL。

如果您调用的URL没有太大变化,您可能会在本地缓存结果,以防止需要解析页面和/或对图像发出HEAD请求。

如果"最大"是指最大的图像大小,那么您可能需要使用图像库检查服务器上的图像。

从外部网页获取图像的最快方法是什么?

对于您使用的任何方法,网络连接都是您的限制因素。优化是没有意义的。

我需要一种方法,从一个通用的外部网页获得最大的5张图片。

HTTP HEAD请求应该为您提供下载图像需要传输多少字节的信息。对HEAD请求的响应应该是HTTP头,如果它是GET请求,那么它就会被发送。特别是省略了HTTP主体(其包含实际图像数据)。请注意,单词应该,而不是(IMHO更可取)单词must

此外,字节的数量不是图像中像素数量的适当度量。您可能会根据contant类型使用一些启发式方法(对于相同数量的像素,PNG的大小与GIF的大小不同,GIF的大小与JPEG的大小不同)。我不知道这对你来说是否足够准确。例如,JPEG图像可能由于不同的压缩级别而变化很大。