-1

我发现有没有办法将 .ICO 文件解码为大于 16x16 的分辨率?从 2 年前开始,最好的建议是使用 image4j。不幸的是,它在 android 下也不起作用,因为“IndexColorModel”、“BufferedImage”和“WritableRaster”类不可用。

虽然通过将其替换为“Bitmap”来解决“BufferedImage”可能会起作用并且不使用“WritableRaster”,但使用 setPixel 设置单个(或一组)像素也可能会起作用,但我无法设法替换“IndexColorModel”,因为我无法绕过它。

我目前正在从一个网站下载一个网站图标,该网站通常在其中存储多个图像。图像大小不同。我阅读了 ICO 文件的结构并尽可能多地分析了 image4j。然而,我在重构各种类以不使用 AWT 时遇到了麻烦。

BitmapFactory 能够加载 ICO 文件;不幸的是,它只加载第一张图片(至少这是我的猜测),因此不允许我决定加载哪个图片(更不用说加载它们并让我选择)。

有谁知道与 2 年前相比是否有任何变化和/或有人愿意帮助我从 image4j 重构例如 BMPDecoder 吗?或者是否有一种完全不同的、更简单的方法?

4

1 回答 1

2

我创建了一个基于 image4j 的库,它允许将 ICO 文件读入位图对象列表。与 image4j 相比,ico4a 不使用任何 AWT 类,而是仅使用 Bitmap / Bitmap.createBitmap。

请参阅https://github.com/divStar/ico4a

虽然库的性能可能不是最好的,因为它在循环中使用了位图对象的 setPixel 方法,但它完成了工作,对我来说已经足够了。

与 image4j 相比,我的库 (ico4a) 仅解码/读取文件。虽然保存 ICO 文件可能相对容易,但我没有这样做,因为我自己不需要它。

如果您对图书馆有其他疑问或问题,请将它们发布在 gitHub 上,我会看看是否可以提供帮助。

于 2016-03-12T12:22:01.077 回答