有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将int数组(图像数据)写入文件的最佳方式是什么

我有一个大的int数组,包含格式为ARGB的图像数据(alpha、R、G和B通道,每个通道1字节)。我想将其保存到onPause()中的文件中,以便在应用程序重新启动时重新加载它。你认为最好的方法是什么

我找到了以下方法:

  • 手动将int数组转换为字节数组(请参见here),然后使用FileOutputStream输出字节数组

  • 将数组包装成java.nio.IntBuffer,然后使用java.io.ObjectOutputStream.writeObject()将对象写入文件

  • 使用java.io.ObjectOutputStream.writeInt()一次编写一个元素

所有这些方法似乎都很浪费,所以可能还有另一种更好的方法。甚至可能是一种使用图像压缩来减小文件大小的方法


共 (1) 个答案

  1. # 1 楼答案

    这些都不是。其中一些甚至毫无意义

    DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(file)));
    

    然后根据需要多次调用dos.writeInt(),然后关闭dos。缓冲液可以消除大部分疼痛

    或者创建一个IntBuffer并使用FileChannel.write(),但我一直无法弄清楚在缺少IntBuffer.asByteBuffer()方法的情况下该如何工作。或者创建一个ByteBuffer,通过asIntBuffer()将其作为一个IntBuffer,放入数据,然后调整ByteBuffer的长度,这是API的另一个缺失部分,然后再次使用FileChannel.write(ByteBuffer)