【问题标题】:Reading ICO file in android along with all sub-images在 android 中读取 ICO 文件以及所有子图像
【发布时间】:2016-06-11 23:30:40
【问题描述】:

我在 2 年前找到了 Is there a way to decode a .ICO file to a resolution bigger than 16x16?,最好的建议是使用 image4j。不幸的是,它在 android 下也不起作用,因为“IndexColorModel”、“BufferedImage”和“WritableRaster”类不可用。

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

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

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

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

【问题讨论】:

    标签: android ico image4j


    【解决方案1】:

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

    https://github.com/divStar/ico4a

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-25
      相关资源
      最近更新 更多