gpt4 book ai didi

java - 我应该将 BufferedImage.TYPE_4BYTE_ABGR 转换为 BufferedImage.TYPE_3BYTE_BGR 吗?

转载 作者:行者123 更新时间:2023-11-30 05:35:11 27 4
gpt4 key购买 nike

我正在研究图像插值,我使用双三次插值来使用AffinedTransformOp将java中图像的分辨率加倍。我使用了BufferedImage进行放大时使用 TYPE_4BYTE_ABGR。当我尝试使用 ImageIO.write 保存我的高档图像时,我发现 openjdk 不支持 TYPE_4BYTE_ABGRjpeg 编码,所以我转换了这个将图像从 TYPE_4BYTE_ABGR 放大到 TYPE_3BYTE_BGR。当我将其保存到文件夹中时,发现此高档图像占用的内存比原始图像占用的内存少(大约一半)。

因此,我假设原始(输入)图像由四个 channel ARGB 表示,而高档(输出)图像采用 3 个 channel RGB ,这就是获得更少内存的原因.

现在我的问题是我应该使用这种转换吗?
是否有一些信息丢失了?
图像质量保持不变吗?

P.S:我从 ImageIO 的文档中读到,当我们将 ARGB 转换为 RGB 时,alpha 值会预乘为 RGB 值,我认为它不应该影响图像的质量。

最佳答案

我解决了我的问题并希望分享我的答案。实际上我的原始图像类型是灰度,原始图像的色彩空间是灰色(即只有一个 channel ,8 位),质量为 90。
当我使用 TYPE_4BYTE_ABGR 时出现问题进行升级而不是使用TYPE_BYTE_GRAY。其次,当您尝试将此图像保存在 jpeg 格式的文件中时,ImageIO.write 默认使用 75 的压缩,因此图像尺寸会变小。您应该使用适合您的压缩系数,或者您应该将其保存为 PNG 格式。
您可以在 Linux 中使用 identify -verbos image.jpg 查看有关您的图像的信息,并可以看到色彩空间、图像类型和质量等
可以查看这个post了解如何在 ImageIO 中手动设置压缩质量。

关于java - 我应该将 BufferedImage.TYPE_4BYTE_ABGR 转换为 BufferedImage.TYPE_3BYTE_BGR 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56786078/

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