-4

我需要一种从通用外部网页获取最大 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 张图片的最快方法是什么?

最大的意思是具有最高分辨率的图像。

4

2 回答 2

0

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

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

我需要一种从通用外部网页获取最大 5 张图像的方法。

HTTP HEAD 请求应该为您提供有关下载图像需要传输多少字节的信息。对 HEAD 请求的响应应该是 HTTP 标头,如果它在 GET 请求中发送,它将被发送。特别是 HTTP 正文(包含实际图像数据)被省略。请注意单词should而不是(恕我直言,更可取的)单词must

此外,字节数不足以衡量图像中的像素数。您可能会使用一些基于 contant 类型的启发式方法(对于相同的像素数,PNG 的大小与 GIF 的大小不同,而 JPEG 的大小也不同)。我不知道这对你来说是否足够准确。例如,JPEG 图像可能因压缩级别不同而有很大差异。

于 2013-06-25T20:20:45.433 回答
0

如果您的意思是最大文件大小中的“最大”,那么我认为您已经在正确的轨道上。您只需要找到源文档中的所有图像,然后可能向图像所在的服务器发出 HEAD 请求,以(希望)从标题中获取文件大小信息,而无需下载文件。

如果您确实关心“最快”,则可以使用具有“多”支持的 cURL 来发出并行请求。从请求中获取标头信息后,您可以确定 5 个最大的文件并显示它们的 URL。

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

如果“最大”为最大图像尺寸,那么您可能需要使用图像库检查服务器上的图像。

于 2013-06-25T20:14:11.513 回答