在Android中保存JPEG文件而不丢失像素信息
我正在通过 BitmapFactory 加载 jpeg 文件并尝试再次保存它(稍后我想在再次保存之前对像素数据进行一些计算)。
但如果我尝试保存它
FileOutputStream fos = new FileOutputStream(new File("/sdcard/test.jpg"));
originalImage.compress(Bitmap.CompressFormat.JPEG, 100, fos);
,那么它与原始图片中的结果并不完全相同。某些像素具有不同的颜色值,这对我以后的计算没有用处。
有没有可能无损保存?或者是我之前加载
Bitmap originalImage = BitmapFactory.decodeFile("/sdcard/input.jpg");
几行图片时就已经出现问题了?
I'm loading a jpeg-file via BitmapFactory and try to save it again (later I want to do some calculation on the pixel data before I save it again).
But if I try to save it with
FileOutputStream fos = new FileOutputStream(new File("/sdcard/test.jpg"));
originalImage.compress(Bitmap.CompressFormat.JPEG, 100, fos);
then it is not exactly the same result as in the original picture. Some pixel have got different color values and this ist not useful for my later calculation.
Is there a possibility to safe it lossless? Or is the problem already when I load the picture with
Bitmap originalImage = BitmapFactory.decodeFile("/sdcard/input.jpg");
few lines before?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不可以。JPEG 格式使用有损压缩。即使您将质量设置为 100,它也不提供正式保证。
不,位图是...位图,即它们代表图像数据的确切位。
No. The JPEG format uses a lossy compression. It makes no formal guarantees even if you set the quality to 100.
No, bitmaps are... maps of bits, i.e. they represent the exact bits of the image data.