我过去曾下载过一个工具,它会将图像文件作为输入并输出一个扩展可用于图形的Image
类的源文件。我现在有一个这个工具的实际应用程序,但我不再有副本。我已多次搜索,希望在没有运气的情况下再次找到它。
我想知道如何在类中硬编码图像(没有外部图像加载)。我实际上会使用char[]
来存储所有字节,但是数组的长度大小限制通常会超出图像。
提前致谢。
答案 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());
}