如何使用Java从网站上获取favicon.ico?

mattbdean:

因此,我正在开发一个应用程序来存储所有用户喜欢的应用程序的快捷方式,就像集线器一样。我可以支持实际文件,并且可以使用.lnk快捷方式解析器。我认为应用程序也支持Internet快捷键也将非常不错。这就是我在做什么:

假设我要获取Google的图标http://www.google.com/favicon.ico)。

  1. 首先,我摆脱掉多余的页面(例如www.google.com/anotherpage将成为)www.google.com

  2. 然后,我ImageIO.read(java.net.URL)用来获取图像。

问题是,ImageIO当我调用此方法时永远不会返回Image:

String trimmed = getBaseURL(page); //This removes the extra pages
Image icon = null;    
try {
    String fullURLString = trimmed + "/favicon.ico";
    URL faviconURL = new URL(fullURLString);
    icon = ImageIO.read(faviconURL);
} catch (IOException e) {
    e.printStackTrace();
}

return icon;

现在我有两个问题:

  1. Java是否支持ICO格式,即使它来自Microsoft?
  2. 为什么ImageIO无法从URL读取?

先感谢您!

鸦片

试试Image4J

正如此快速的Scala REPL会话所示(可粘贴为Java代码):

> net.sf.image4j.codec.ico.ICODecoder.read(new java.net.URL("http://www.google.com/favicon.ico").openStream())

res1: java.util.List[java.awt.image.BufferedImage] = [BufferedImage@65712a80: type = 2 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=ff000000 IntegerInterleavedRaster: width = 16 height = 16 #Bands = 4 xOff = 0 yOff = 0 dataOffset[0] 0]

更新

回答您的问题:Java是否支持ICO?看起来不像:

> javax.imageio.ImageIO.read(new java.net.URL("http://www.google.com/favicon.ico"))

java.lang.IllegalArgumentException: Empty region!

为什么ImageIO无法从URL读取?嗯,URL本身似乎对我有用,因此您可能遇到代理/防火墙问题,或者可能是上述问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章