1
我正在通过BitmapFactory加载jpeg文件并尝试再次保存它(后来我想在再次保存它之前对像素数据进行一些计算)。在Android中保存JPEG文件,不丢失像素信息
但是,如果我试图把它与
FileOutputStream fos = new FileOutputStream(new File("/sdcard/test.jpg"));
originalImage.compress(Bitmap.CompressFormat.JPEG, 100, fos);
保存那么它是不完全一样的结果作为原始图片。某些像素具有不同的颜色值,这对我以后的计算没有用。
是否有可能安全无损?或者是我在加载图片时出现问题
Bitmap originalImage = BitmapFactory.decodeFile("/sdcard/input.jpg");
之前几行?
好吧,但是当我在一个普通的项目中用Java进行尝试时,我会用'BufferedImage originalImage = ImageIO.read(new File(“input.jpg”))来做到这一点。 ImageIO.write(originalImage,“jpg”,new File(“test.jpg”));'这将无损。可悲的是,Android不支持ImageIO,但是没有办法像这样做吗? – Steve 2012-02-08 15:18:46
如果您不希望像素值发生变化,请使用像PNG这样的无损压缩 – BitBank 2012-02-08 15:22:53
不幸的是,并不能保证* x = compressJpeg(decompressJpeg(x))*适用于所有* x *。 (对* x *的一些值和一些jpeg-algoritms,它*可能显然是这种情况,但不应该依赖它。)正如BitBank所说,使用PNG(或BMP)进行无损图像存储。 – aioobe 2012-02-08 15:58:10