android 有没有办法从网站的URL抓取一个徽标图标,编程?

pokxtpni  于 2023-03-16  发布在  Android
关注(0)|答案(7)|浏览(244)

我在创建一个活动的过程中,我将显示其标志和用户选择的别名访问的网站列表。
例如:

    • 最近访问的网站 *

网站1/别名
logo 2网站2/别名

.所以没有
问题是,(参考随附图片)如何让网站徽标显示在左侧的http://?

332nm8kg

332nm8kg1#

使用此网站:
https://besticon-demo.herokuapp.com/allicons.json?url=www.stackoverflow.com
它会找到一个网站的所有不同大小的logo,并返回一个漂亮的json字符串,其中包含图标的url等 meta数据,你只需用你的域名替换www.stackoverflow.com
该网站也有一个图形用户界面输入网站手动如果你喜欢:

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"
      }
   ]
}
ffx8fchx

ffx8fchx2#

它叫favicon,你要做的就是:
1.如果/favicon.ico处有图标,请使用该图标。
1.否则,获取页面的内容,并从<link rel="shortcut icon" href="URL goes here" />中提取位置。您需要使用HTML解析器,找到reliconshortcut icon<link>

brtdzjyr

brtdzjyr3#

我知道我迟到了,但这个API会帮助其他人
Android本身不支持favicon文件,您可以通过不同的方式获取favicon,但无法显示/使用它。
Google提供免费的API来获取图像格式的favicon。
https://www.google.com/s2/favicons?sz=64&domain_url=microsoft.com
使用Picasso在图像视图中显示提取的图标。

o4hqfura

o4hqfura5#

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

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;
        }
    }
7y4bm7vi

7y4bm7vi6#

请尝试使用此代码:

imageview1.setImageBitmap(webview1.getFavicon());
nxowjjhe

nxowjjhe7#

下面是一个python库,它尝试从URL推断徽标图像:
https://github.com/dcollien/urlimage
它会解析URL处的HTML,并尝试执行一系列操作,包括:

  • 项目属性=“图像”或属性=“图像”的 meta标记
  • 具有属性=“og:image:secure_url”或属性=“og:image”的 meta标记
  • 带有名称=“twitter:image”的 meta标签
  • 用于Microsoft磁贴的 meta标签,带有:名称=“应用程序宽度310 x150徽标”、名称=“应用程序方形310 x310徽标”、名称=“应用程序方形150 x150徽标”、名称=“应用程序方形70 x70徽标”
  • 带有rel=“apple-touch-icon”的链接标记
  • 带有rel=“icon”的链接标记
  • 尝试“{scheme}://{domain}/favicon.ico”以查看它是否存在
  • 否则取出第一个img标签(h1旁边)

相关问题