我有一个灰度图像,在其中我以二维字节数组的形式表示它们,这些字节具有不同的值,具体取决于它们各自的比特率,即(0 -> 255)。然后我应用一个或多个压缩算法,即(运行长度编码) 来提取另一个尺寸更小的字节数组,这代表压缩操作。从中我成功地将位图文件重建为代表解压缩操作的原始形式。我知道一切正常,因为我通过解压缩操作得到了相同的图像。
现在我的问题是在进行压缩操作后,我想将生成的数组存储到一个文件中,在解压缩时将在该文件中提取其内容。我试过把它写成文本文件
FileOutputStream output = new FileOutputStream(new File("d:/"+ fileName+".jrle"));
IOUtils.write(rle, output);
我试着把它写成二进制文件
ObjectOutputStream myStream = new ObjectOutputStream(new FileOutputStream("d:/"+fileName+".dat"));
myStream.writeObject(rle);
然而,在这两种情况下,这个文件的大小都比原始位图文件的大小要大得多。
512x512 位图文件大小 32KB
压缩文本文件大小 272KB
压缩二进制文件大小 257KB
位图的字节数组大小 262144
压缩数组大小 111049
因为我的压缩数组实际上比从位图文件中提取的原始数组小得多,我如何保存为比位图更小的文件?
我不确定我是否正确解释了自己,如果需要,请询问更多详细信息。
谢谢!