我正在使用Java ImageIO和BufferedImage进行某些图像操作,并想查看将图像输出为jpg时的行为。在那里,我发现了一些我无法完全解释的有趣行为。我有以下代码。该代码读取图像,然后在同一文件夹中输出与“ copy.jpg”相同的图像。代码在Kotlin中,但是使用的函数是Java函数:
val image = File("some/image/path.jpg")
val bufImage = ImageIO.read(image.inputStream())
FileOutputStream(File(image.parentFile,"copy.jpg")).use { os ->
ImageIO.write(bufImage,"jpg",os)
}
我希望它输出完全相同的文件,除了元信息。但是,生成的文件几乎是原始文件的十分之一。我怀疑元信息会那么多。确切的大小差异取决于我使用的图像文件而有所不同,但是每次输出的图像都会更小。但是我看不到旧文件的质量差异。放大时,我会看到相同的像素。
为什么文件大小如此减少?