前言
字符画图片,顾名思义就是由一个个字符组成的图片,下面这张图片很容易帮助你理解,如果我们可以将字符排列好,让他看上去像一个物体的形状,那么最后再将它输出保存为一张图片就可以实现了。
下面的这些形状同样可以使用这种方式实现。
上面的图像看上去还是很不错的,如果要实现一个很复杂的图片,且展示出很多细节特征,那之前的方法就有点不可取了,比如下面的图片。
通过我们今天的程序来处理,就可以很高效实现这种比较复杂且细节比较多的字符画了。
实现原理
我们知道字符画是一系列字符的组合,那要如何将它们变成字符画呢。
这里要解决三个问题:
1.如何将图片变成一个个字符。
2.接着要将他们有序的组织在一起。
3.显示出它们对应的颜色,从而形成一张彩色的字符画。
我们将一张图片想象成由行列组成的方格矩阵。
方格的每一个位置根据颜色的不同来填写对应的字符,字符的种类越多,可以表现的颜色也越多,图片也会更有层次感。问题来了,我们是要转换一张彩色的图片,这么多的颜色,要怎么对应到单色的字符画上去?这里就要介绍灰度值的概念了。
灰度值:指黑白图像中点的颜色深度,范围一般从0到255,白色为255,黑色为0,故黑白图片也称灰度图像。
现在只有256种可能了,我们找找一串字符,有70个,总体的排列顺序是前面的像素更高,看上去更黑,越往后越低,看上去更亮,数量还是不够,我们可以通过比例来获取将256划分成70等份,每个字符就可以代表一个范围的颜色了。
字符画文字实现
上面最后虽然出现了结果,由于像素比较高,导致字符串非常多,下面我们去缩小一下整个图片,改善显示效果。
上面效果就比较好了,仔细放大查看一下,里面的确全是字符组成的。
变成图片
上面是将字符保存在文件里的,下面看看如何将其保存为图片。因为是通过将文字写到图片里面去的,文字有大小,如果直接用原来文字大小的图片是放不下去的,这里通过将图片变大一点乘以15,目的是为了放下所有文字。
彩色字符画图片思路
上面实现了黑白字符画图片,如果要实现彩色字符图画,可以将原来的图片在创建一份保留色彩的,在循环中获取对应灰度的时候,在获取对应位置的颜色值,写入时将颜色也同时写入就可以实现彩色字符画效果了。
(全文完)
python图像处理-实现验证码图片(上)
python图像处理-实现验证码图片(下)
python图像处理-gif动图
python图像处理-图片裁剪