「这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战」。
前面介绍了一篇java实现图片灰度化处理的小demo,接下来再介绍一个有意思的东西,将一个图片转换成字符图片
借助前面图片灰度化处理的知识点,若我们希望将一张图片转成字符图片,同样可以遍历每个像素点,然后将像素点由具体的字符来替换,从而实现字符化处理
基于上面这个思路,具体的实现就很清晰了
1 | java复制代码@Test |
注意上面的实现,在会字符的时候,先取出源像素点的色彩,然后重新设置给g2d,这个int转color也比较简单,实现如下
1 | java复制代码public static Color int2color(int color) { |
这样就实现了一个基础版的转字符图了,实际跑一下看看效果
这下尴尬了,输出的并不是我们预期的字符图,那么问题出在哪呢?
仔细看上面的文字大小为1,文字太小,导致即使是有字符组件的图,最终肉眼看起来和原图也没啥区别
那么我们就试一下将这个文字搞大点,将n*n个像素点作为一个文字渲染区域,这样我们需要调整一下遍历的步长;其次就是这个区域的颜色怎么定
- 直接取均值
1 | java复制代码/** |
另外的就是改一下遍历的步长
1 | java复制代码@Test |
再次执行之后结果如下,实现了我们的预期效果
最后再介绍一个更好用的姿势,直接使用开源项目 github.com/liuyueyi/qu… 来实现图片字符画
使用这个项目的 image-plugins
之后,生成一个灰度图就很简单了
1 | java复制代码public void testCharImg() throws IOException { |
注意这个ImgPixelWrapper
封装类,处理基础的字符处理之外,还支持生成灰度图,gif图转字符动画,图片像素化(如马赛克…)
至于quick-media这个项目就更有意思了,java侧若想生成酷炫的二维码,选择它绝对不会让你失望;有兴趣的小伙伴可以瞅一瞅
一灰灰的联系方式
尽信书则不如无书,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
- 个人站点:blog.hhui.top
- 微博地址: 小灰灰Blog
- QQ: 一灰灰/3302797840
- 微信公众号:一灰灰blog
本文转载自: 掘金