首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Java中将32位RGBA图像转换为8位灰度图像?

如何在Java中将32位RGBA图像转换为8位灰度图像?
EN

Stack Overflow用户
提问于 2020-03-04 09:39:17
回答 1查看 690关注 0票数 1

在Java Android.All中,我想将32位RGBA图像转换为8位灰度图像,还有一些代码尝试将RGBA (4通道)转换为灰度(4通道)。

有人能帮助或告诉我如何将RGBA (4通道)图像转换为灰度(1通道)图像吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-04 10:02:20

首先,当转换为8位灰度时,RGBA图像的A通道将被忽略.此时,您将丢失alpha通道的信息。

可以通过服务器方式将RGB图像转换为灰度。最简单的方法是只使用三个通道中的一个(每个通道已经有8位),并从这个通道创建一个8位图像。您将看到产生的灰度图像之间的显著差异。你的结论可能是,忽视两个渠道是不明智的。

这可能导致这样的想法,即每个像素的灰度信息必须依赖于所有三个通道(R、G和B)。

方法是将灰度值计算为R、G和B的平均值:

代码语言:javascript
复制
grayscale = (R+G+B)/3

更好的方法是将其计算为加权和:

代码语言:javascript
复制
grayscale = 0.21*R + 0.72*G + 0.07*B

试一试,看看结果和它们之间的差异。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60523023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档