Any way to grab a logo icon from website URL, programmatically?

后端 未结 7 869
夕颜
夕颜 2021-01-01 01:08

I am in the process of creating an activity where I will show the list of website visited with its logo and its alias name chosen by user.

e.g.

相关标签:
7条回答
  • 2021-01-01 01:35

    It's called a favicon, and all you have to do is:

    1. If there's an icon at /favicon.ico, use that.
    2. Otherwise, get the content of the page, and extract the location from <link rel="shortcut icon" href="URL goes here" />. You’ll need to use an HTML parser and find the <link> with a rel of either icon or shortcut icon.
    0 讨论(0)
  • 2021-01-01 01:35

    Try using this code:

    imageview1.setImageBitmap(webview1.getFavicon());
    
    0 讨论(0)
  • 2021-01-01 01:36

    This method can be used to get Favicon Icon bitmap

     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;
            }
        }
    
    0 讨论(0)
  • 2021-01-01 01:39

    Use this website:

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

    It will find all logos for a website in multiple sizes and return a nice json string with meta data including the url to the icon. You simply replace www.stackoverflow.com with your domain.

    The site also has a gui for entering in websites manually if you prefer:

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

    Here is a sample string returned from querying for the stack overflow website:

    {
       "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"
          }
       ]
    }
    
    0 讨论(0)
  • 2021-01-01 01:50

    I know I am late but this API will help others

    Android doesn't support favicon files. You can fetch favicon but can't show/use it.

    But Google provides free API to get favicon in image format.

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

    Use Picasso to show icon in imageview.

    0 讨论(0)
  • 2021-01-01 01:53

    Here's a python library which tries to infer the logo image from a URL:

    https://github.com/dcollien/urlimage

    it parses the HTML at the url, and tries a whole bunch of things including:

    • meta tag with itemprop="image" or property="image"
    • meta tag with property="og:image:secure_url" or property="og:image"
    • meta tag with name="twitter:image"
    • meta tag for Microsoft tiles, with: name="msapplication-wide310x150logo", name="msapplication-square310x310logo", name="msapplication-square150x150logo", name="msapplication-square70x70logo"
    • link tag with rel="apple-touch-icon"
    • link tag with rel="icon"
    • tries out "{scheme}://{domain}/favicon.ico" to see if it exists
    • otherwise pulls out the first img tag (next to an h1)
    0 讨论(0)
提交回复
热议问题