我开发了一个项目来加密图像。该程序运行良好,但在加密 148 KB png 图像后,它变为 257 KB。当同一个文件被解密回来时,我得到了旧图像,但图像现在是 219 KB。为什么体积几乎翻了一番?
我的代码:无法读取 jar 中的图像
我开发了一个项目来加密图像。该程序运行良好,但在加密 148 KB png 图像后,它变为 257 KB。当同一个文件被解密回来时,我得到了旧图像,但图像现在是 219 KB。为什么体积几乎翻了一番?
我的代码:无法读取 jar 中的图像
问题不在于您的加密/解密步骤,而在于您如何读取和写入 PNG。
FileInputStream
您应该使用和之类的二进制流来读取和写入 PNG FileOutputStream
。通过保持二进制,您可以确保您不会更改数据。
图像更改大小(148 KB -> 219 KB)的原因是您没有保留原始文件的所有属性。
例如,输出宽度、高度和类型使用以下语句进行硬编码(而不是从原始图像中填充):
BufferedImage writeImage = new BufferedImage(512, 512, BufferedImage.TYPE_BYTE_GRAY);