0

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

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

提前致谢。

4

2 回答 2

0

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

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());
}
于 2014-07-21T17:34:46.143 回答
0

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

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

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

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

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

于 2014-07-21T17:10:25.120 回答