gpt4 book ai didi

java - 如何在 android 中以全分辨率保存照片?

转载 作者:行者123 更新时间:2023-11-30 08:59:31 25 4
gpt4 key购买 nike

我制作了一个使用相机捕捉图像的应用程序。图像作为 Bitmap 传回我的应用程序。我想知道如何修改我的代码以将 Bitmap 保存为全分辨率的 JPEG 格式?

FileOutputStream out = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();

我认为 Bitmap 正在被压缩成更小的尺寸!

最佳答案

压缩是指减少保存图像所需的物理磁盘空间。这并不意味着图像质量或分辨率也会降低。

JPEG 是(大部分)属于 lossy compression algorithms 的一组文件格式的一部分。 .换句话说,牺牲了一些次要的图像细节和质量来减小图像的文件大小,但它仍然不会降低图像的分辨率。

如果您想减小图像的文件大小,但又不想降低图像质量,您需要使用支持 lossless compression 的文件格式.例如,您可以使用 Bitmap.CompressFormat.PNG

WEBP 支持有损和无损压缩(文件大小甚至比 PNG 和 JPG 还小)。但是只在 API 级别 14 中添加了对 WEBP 的支持,因此可能存在一些向后兼容性问题。尽可能使用 WEBP,如果您关心图像质量,则使用 PNG。


无论如何,让我们看看compress() 方法:

public boolean compress (Bitmap.CompressFormat format, int quality, OutputStream stream)

如您所见,您可以选择 CompressFormat,传递 OutputStream 并选择质量。您作为质量传递的数字可以在 0 到 100 之间,它决定您是有损压缩还是无损压缩。由于您传入 100,因此无论您选择哪种 CompressFormat,压缩总是无损的!

顺便说一句:由于 PNG 仅支持无损压缩,因此它将完全忽略质量参数并始终保存图像而不会降低其质量!

关于java - 如何在 android 中以全分辨率保存照片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27200303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com