12

我正在创建一个活动,我将在其中显示访问过的网站列表及其徽标和用户选择的别名。

例如

  • 最近访问的网站

    logo1 网站1/别名

    logo2 网站2/别名

    .

    . 所以不行

问题是,(参考附图)如何让网站徽标显示在 http:// 的左侧?

如下所示,我只想抓取图标并将其保存在本地

4

7 回答 7

21

使用本网站:

https://besticon-demo.herokuapp.com/allicons.json?url=www.stackoverflow.com

它将找到一个网站的多种尺寸的所有徽标,并返回一个带有元数据的漂亮 json 字符串,包括图标的 url。您只需替换www.stackoverflow.com为您的域。

如果您愿意,该网站还有一个用于手动输入网站的 gui:

https://besticon-demo.herokuapp.com/

以下是查询堆栈溢出网站返回的示例字符串:

{
   "url":"www.stackoverflow.com",
   "icons":[
      {
         "url":"http://stackoverflow.com/apple-touch-icon.png",
         "width":158,
         "height":158,
         "format":"png",
         "bytes":3445,
         "error":null,
         "sha1sum":"c78bd457575a3221c6b3d0d17ffb00ffc63d7cd0"
      },
      {
         "url":"http://cdn.sstatic.net/Sites/stackoverflow/img/favicon.ico?v=4f32ecc8f43d",
         "width":32,
         "height":32,
         "format":"ico",
         "bytes":5430,
         "error":null,
         "sha1sum":"4f32ecc8f43d0986b9c6ce9f37999e86c0b829ef"
      },
      {
         "url":"http://stackoverflow.com/favicon.ico",
         "width":32,
         "height":32,
         "format":"ico",
         "bytes":5430,
         "error":null,
         "sha1sum":"4f32ecc8f43d0986b9c6ce9f37999e86c0b829ef"
      }
   ]
}
于 2016-06-23T15:58:52.420 回答
15

它被称为网站图标,您所要做的就是:

  1. 如果 有一个图标/favicon.ico,请使用它。
  2. 否则,获取页面内容,并从中提取位置。您将需要使用 HTML 解析器并使用a或.<link rel="shortcut icon" href="URL goes here" /><link>reliconshortcut icon
于 2012-05-04T22:05:42.710 回答
9

我知道我迟到了,但这个 API 会帮助其他人

Android 不支持网站图标文件。您可以获取 favicon,但不能显示/使用它。

但是 Google 提供了免费的 API 来获取图像格式的 favicon。

https://www.google.com/s2/favicons?sz=64&domain_url=microsoft.com

使用 Picasso 在 imageview 中显示图标。

于 2020-07-31T14:31:43.377 回答
4

使用这个logo.clearbit.com/stackoverflow.com

您甚至可以自定义以获得特定尺寸和 grascaled 版本

logo.clearbit.com/stackoverflow.com?size=80&greyscale=true

于 2020-05-06T13:34:50.907 回答
3

此方法可用于获取 Favicon Icon 位图

 private Bitmap fetchFavicon(Uri uri) {
        final Uri iconUri = uri.buildUpon().path("favicon.ico").build();
        Log.i(TAG, "Fetching favicon from: " + iconUri);

        InputStream is = null;
        BufferedInputStream bis = null;
        try
        {
            URLConnection conn = new URL(iconUri.toString()).openConnection();
            conn.connect();
            is = conn.getInputStream();
            bis = new BufferedInputStream(is, 8192);
            return BitmapFactory.decodeStream(bis);
        } catch (IOException e) {
            Log.w(TAG, "Failed to fetch favicon from " + iconUri, e);
            return null;
        }
    }
于 2018-02-23T08:04:55.220 回答
1

尝试使用此代码:

imageview1.setImageBitmap(webview1.getFavicon());
于 2017-11-09T02:05:31.290 回答
0

这是一个尝试从 URL 推断徽标图像的 python 库:

https://github.com/dcollien/urlimage

它解析 url 处的 HTML,并尝试了很多事情,包括:

  • 带有 itemprop="image" 或 property="image" 的元标记
  • 带有 property="og:image:secure_url" 或 property="og:image" 的元标记
  • 名称 =“twitter:image”的元标记
  • Microsoft 磁贴的元标记,具有:name="msapplication-wide310x150logo"、name="msapplication-square310x310logo"、name="msapplication-square150x150logo"、name="msapplication-square70x70logo"
  • 带有 rel="apple-touch-icon" 的链接标签
  • 带有 rel="icon" 的链接标签
  • 尝试“{scheme}://{domain}/favicon.ico”看看它是否存在
  • 否则拉出第一个 img 标签(在 h1 旁边)
于 2019-09-12T07:06:32.827 回答