在Android中保存JPEG文件而不丢失像素信息

发布于 2025-01-03 16:03:06 字数 452 浏览 1 评论 0原文

我正在通过 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夏雨凉 2025-01-10 16:03:06

是否有可能无损保护它?

不可以。JPEG 格式使用有损压缩。即使您将质量设置为 100,它也不提供正式保证。

或者当我使用 [...] 加载图片时已经出现问题

不,位图是...位图,即它们代表图像数据的确切位。

Is there a possibility to safe it lossless?

No. The JPEG format uses a lossy compression. It makes no formal guarantees even if you set the quality to 100.

Or is the problem already when I load the picture with [...]

No, bitmaps are... maps of bits, i.e. they represent the exact bits of the image data.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文