我需要一种方法从通用外部网页获取最大的5张图片。
我知道由于跨站点安全,我不能只使用ajax(也许我错了)。
所以我必须使用php + javascript。
我刚刚编写了这个PHP代码来获取外部网址的所有图片:
$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张图像的最快方法是什么?
最大的是指分辨率最高的图像。
答案 0 :(得分:0)
如果你的意思是“最大”,就像最大的文件大小一样,那么我认为你已经在正确的轨道上了。您只需要找到源文档中的所有图像,然后可能向图像所在的服务器发出HEAD请求(希望)从头文件中获取文件大小信息而不下载文件。
如果您真正担心“最快”,可以使用具有“多”支持的cURL来进行并行请求。从请求中获取标头信息后,您可以确定5个最大的文件并显示URL。
如果您调用的URL没有太大变化,您可以在本地缓存结果,以防止需要解析整个页面和/或对图像发出HEAD请求。
如果最大图像尺寸为“最大”,那么您可能需要使用图像库检查服务器上的图像。
答案 1 :(得分:0)
从外部网页获取图片的最快方法是什么?
使用您使用的任何方法,网络连接是您的限制因素。优化没有任何意义。
我需要一种方法从通用外部网页获取最大的5张图片。
HTTP HEAD请求应该为您提供有关需要传输多少字节才能下载映像的信息。对HEAD请求的响应应该是HTTP标头,如果它是GET请求的话,它将被发送。特别是省略了HTTP主体(包含实际图像数据)。注意应该而不是(恕我直言,更可取)单词必须。
此外,字节数不足以衡量图像中的像素数。您可以使用基于常规类型的一些启发式方法(对于相同数量的像素,PNG具有与GIF不同的大小而具有与JPEG不同的大小)。我不知道这对你来说是否足够准确。例如,由于压缩级别不同,JPEG图像可能会有很大差异。