JPEG到Bitmap到JPEG

时间:2014-08-25 21:48:43

标签: android file-io bitmap javax.imageio

我试图通过首先将图像文件解码为Bitmap并将其压缩回JPEG来制作图像文件的副本。副本(~3mbs)大于原始文件(~2mbs)。有没有办法创建一个精确的副本?

        Bitmap origBitmap = BitmapFactory.decodeFile(file);
        FileOutputStream out = new FileOutputStream(file);
        origBitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
        // this will give me a copy larger than the original image

我知道我可以使用FileOutputStream和FileInputStream来创建相同的副本。但我想对副本进行一些修改,Android不支持Javax.ImageIO。

        FileOutputStream out = new FileOutputStream(file);
        File old_file = new File(filePath);
        FileInputStream input = new FileInputStream(old_file); 
        copyStream(input, out);
        // this will give me an exact copy

1 个答案:

答案 0 :(得分:1)

JPEG是一种有损格式,这意味着每次使用该算法时都会丢失一些数据。每次执行此操作时都会显得更糟,即使在高质量设置下也是如此。

您的副本可能更大,因为您使用的是100的质量设置。我敢打赌,原始文件是使用较低质量的设置制作的 - 通常人们使用70到90之间。