「这是我参与11月更文挑战的第11天,活动详情查看:2021最后一次更文挑战」。
本文通过一个简单的实例,演示如何使用java来实现图片灰度化处理,主要借助下面两种策略来处理颜色
灰度化公式
1 | ini复制代码avgColor = red * 0.299f + green * 0.587f + blue * 0.114f |
均值方式
1 | ini复制代码avgColor = (red + green + blue) / 3.0f |
基于上面两种方式,我们要实现一个图片灰度化的处理,无非就是获取图片的每个像素点的颜色,然后计算avgColor,再用新的颜色填充即可
一个基础的实现演示如下
1 | java复制代码private Color avg1(int red, int green, int blue) { |
生成原图与灰度图的对比如下
注意上面的实现,其中加载网络图片的具体实现,之前的博文有介绍,有兴趣的小伙伴可以参考: 封装一个根据路径获取文件资源的工具类
此外介绍一个更好用的姿势,直接使用开源项目 github.com/liuyueyi/qu… 来实现灰度处理
使用这个项目的 image-plugins
之后,生成一个灰度图就很简单了
1 | java复制代码@Test |
注意这个ImgPixelWrapper
封装类,处理基础的灰度处理之外,还支持生成字符图,图片像素化(如马赛克…)
至于quick-media这个项目就更有意思了,java侧若想生成酷炫的二维码,选择它绝对不会让你失望;有兴趣的小伙伴可以瞅一瞅
一灰灰的联系方式
尽信书则不如无书,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
- 个人站点:blog.hhui.top
- 微博地址: 小灰灰Blog
- QQ: 一灰灰/3302797840
- 微信公众号:一灰灰blog
本文转载自: 掘金