Java中处理2.1GB超大二进制文件转RGB格式PNG的分块处理方案求助
Java中处理2.1GB超大二进制文件转RGB格式PNG的分块处理方案求助
各位Java开发者们好,我现在碰到了一个大文件处理的难题,想请大家帮忙出出主意:
我手里有一个从QEMU监视器的pmemsave指令导出的原始内存dump二进制文件,大小差不多有2.1GB。我的需求是把这个文件转换成RGB格式的PNG图片——简单来说,就是文件里每连续3个字节对应一个像素的R、G、B分量,比如二进制的10001000 10100010 11000101就对应十六进制颜色#88a2c5的像素。
我原本设想的处理流程是这样的:
- 定义一个128MB的分块大小:
CHUNK_SIZE = 134217728 - 创建一个新的RGB格式PNG文件
- 以读模式打开源二进制文件
- 循环读取源文件,每次读取一块数据
- 将读取到的数据处理后追加到PNG文件中
- 最后将PNG文件保存到磁盘
原本我觉得用javax.imageio.ImageIO应该能轻松搞定,但实际操作时发现ImageIO.write根本处理不了这么大的文件——而且它默认不支持分块写入,如果目标文件已经存在还会直接覆盖破坏内容。
想问问大家,有没有什么基于Java现代特性(比如流处理之类的)的解决方案,能帮我实现这种超大文件的分块转PNG需求?
备注:内容来源于stack exchange,提问作者Queensalats
相关产品推荐
相关产品推荐

