我从2年前找到Is there a way to decode a .ICO file to a resolution bigger than 16x16?,最好的建议是使用image4j。不幸的是,它在android(尤其是)下不起作用,因为类" IndexColorModel"," BufferedImage"和#34; WritableRaster"不可用。
在解决问题时" BufferedImage"将其替换为" Bitmap"也许可以工作而不是使用" WritableRaster",而是使用setPixel设置单个(或一组)像素也可以工作,我无法设法替换" IndexColorModel",因为我不能把头包住。
我目前正在从网站下载一个网站图标,该网站通常会存储多个图片。图像大小不同。我读了ICO文件的结构,并尽可能地分析了image4j。然而,我很难重构各个类以不使用AWT。
BitmapFactory能够加载ICO文件;不幸的是它只加载了第一张图片(这至少是我的猜测),因此不让我决定加载哪个图片(更不用说加载它们了,让我选择)。
是否有人知道2年前是否有任何变化和/或是否有人愿意帮助我重构,例如来自image4j的BMPDecoder?或者是否有一种完全不同的,更简单的方法呢?
答案 0 :(得分:2)
我已经创建了一个基于image4j的库,它允许将ICO文件读入Bitmap对象列表。与image4j相反,ico4a不使用任何AWT类,而只使用Bitmap / Bitmap.createBitmap。
请参阅https://github.com/divStar/ico4a。
虽然图书馆的表现可能不是最好的,因为它在循环中使用了Bitmap-object的setPixel方法,但它完成了工作并且对我来说已经足够好了。< / p>
与image4j相比,我的库(ico4a)只解码/读取文件。虽然保存ICO文件可能相对容易,但我没有这样做,因为我自己并不需要它。
如果您对图书馆有其他疑问或问题,请将它们发布在gitHub上,我会看看是否可以提供帮助。