问题标签 [image4j]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
99 浏览

java - 从图像列表中找到最合适的

我正在使用一个名为Image4j的库来加载一个 ico 文件,从列表中选择一个图像,对其进行缩放(如果需要)并将其作为 ImageIcon 放入 JLabel 中。

该库有一个方法read(File icoFile),它返回List<BufferedImage>ico 文件中包含的所有图像的列表。

我想要做的是从列表中快速选择最适合标签大小的图像。标签和 ico 图像都是方形的。

我想出了最幼稚的方法,但我怀疑有更快的方法。我会接受这个,但我的程序会经常执行这个例程,所以我希望这部分尽可能高效。

按宽度比较图像的选择是任意的,因为它们都是正方形的。

此外,由于选择最佳拟合的主要原因是尝试保持图像的质量,这种方法是否应该丢弃任何小于目标尺寸的图像?如果是这样,那将如何改变算法?

我在 Java 中重新缩放图像的经验很少。甚至有必要找到尺寸最接近的匹配吗?也许即使原始文件更大,也有办法在不损失太多质量的情况下重新缩放?

0 投票
1 回答
747 浏览

android - 在 android 中读取 ICO 文件以及所有子图像

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

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

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

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

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