硬代码图像进入类文件

时间:2014-07-21 17:06:42

标签: java image filesize hardcode

我过去曾下载过一个工具,它会将图像文件作为输入并输出一个扩展可用于图形的Image类的源文件。我现在有一个这个工具的实际应用程序,但我不再有副本。我已多次搜索,希望在没有运气的情况下再次找到它。

我想知道如何在类中硬编码图像(没有外部图像加载)。我实际上会使用char[]来存储所有字节,但是数组的长度大小限制通常会超出图像。

提前致谢。

2 个答案:

答案 0 :(得分:0)

您可以对数据进行base64编码。

Apache commons编解码器提供base64编码器和解码器。然后,您可以使用online tool将图像编码为base64。只需在java文件中写一个包含编码器输出文本的文字字符串。

要访问图像,首先将Base64字符串解码为字节数组。

然后你可以创建你的形象: ImageIO.read(new ByteArrayInputStream(base64bytes))

您的长度大小限制也基本上无关紧要,因为java数组的大小限制是整数类型,超过20亿或2千兆字节。

答案 1 :(得分:0)

一种可能的方法是将图像字节作为String存储在类中。例如,LWJGL在LWJGLUtil class中使用这种方式。他们使用以下函数将字符串转换为ByteBuffer

private static ByteBuffer loadIcon(String data) {
    int len = data.length();
    ByteBuffer bb = BufferUtils.createByteBuffer(len);
    for(int i=0 ; i<len ; i++) {
        bb.put(i, (byte)data.charAt(i));
    }
    return bb.asReadOnlyBuffer();
}

BufferUtils.createByteBuffer声明为

public static ByteBuffer createByteBuffer(int size) {
    return ByteBuffer.allocateDirect(size).order(ByteOrder.nativeOrder());
}