代码之家  ›  专栏  ›  技术社区  ›  Eddie Parker

从网页中提取“最佳”图像的技术

  •  9
  • Eddie Parker  · 技术社区  · 15 年前

    我正在尝试为我的网站构建类似于Facebook的“分享”功能的东西。

    我已经到了可以接受一个URL、从中获取元关键字和合适的标题/描述的地步,但是我有点执着于确定用户可能想要共享的“可能”照片的最佳方法。

    我目前使用simplexmlement将页面转换为可遍历的DOM,并查找所有标记,将它们转换为绝对URL。在那之后,我不知道如何才能找到合适的缩略图。

    我是否下载所有文件,并按文件大小排列?我是否使用类似“在页面中间遇到”的启发式方法?

    其他人有什么建议、建议或建议吗?

    2 回复  |  直到 15 年前
        1
  •  7
  •   nathanchere Jitendra Vyas    15 年前

    不久前,我写了类似的东西,以获取刮伤的博客文章中的图像。我选择一个图像的标准是,在获取页面上所有图像的列表,然后分配“优先点”这一行:

    • 忽略从adblocker列表中获取的黑名单中托管的图像
    • 忽略间接图像,例如链接到样式表或iframe中
    • 忽略宽度或高度低于50像素的图像
    • 忽略重复多次的图像
    • 为主机白名单(如photobucket、imageshack.us)中托管的图像分配优先级点
    • 为页面上最大的3个图像分配优先级点
    • 为同一主机上的图像分配优先级点
    • 为定义了alt标记的图像分配优先级点
    • 为出现在P标记中的图像分配优先级点

    然后选择具有最高优先级的那个。它当然不是简单的或过于科学的,但它得到的有用的东西往往比没有得到的要多得多。

        2
  •  3
  •   mcliedtk    15 年前

    我没有任何直接的经验,所以我不确定是否有任何具体的最佳实践,但一般来说,我认为一个启发式的方法考虑几个因素是有意义的,因为在网站实现中发现了可变性。

    我将查看两组项目:图像属性和图像放置位置/方式的上下文。

    图像属性:

    • 宽度和高度满足最小阈值
    • 纵横比合理(平铺的背景图像可能具有极端的纵横比,这很好地表明图像可能不适合)
    • 图像中存在多个颜色(很难检测,但可以避免各种背景图像)

    图像语境:

    • 图像不会在页面上重复(这样可以避免使用图标和其他可能重复的设计元素)
    • 在页面上的h1、h2等标记之后发生;这将达到您对来自页面中间的图像的观点,再次避免使用设计元素。
    • 有一个alt标签(虽然这并不是一贯使用的,所以可能没有提供太多有用的信息)

    我将为前面的项目分配权重,然后根据每个图像满足规则的程度对找到的图像进行排序。

    另外,请注意,有些页面可能使用CSS(或Flash等)来显示图像。这些是我们对您的图像权限之外的内容(根据您定义的算法);也许不是什么大问题,但需要考虑的问题。