小朋友们好,大朋友们好!
我是猫妹,一名爱上Python编程的小学生。
和猫妹学Python,一起趣味学编程。
今日主题
什么是字符画呢?
如何用Python将图片转为字符画?
我们先找一幅原画,比如它吧,其他彩色图片也一样。
比如猫妹用Python生成的这个如下,它是文本文件,猫妹截图如下:
它本质上是一些字符
下图是用彩色图片转换的字符画,怎么样,神奇吧?
猫妹,这是怎么做的啊?
稍等,有些基础知识,咱们必须先学习掌握下。
图片常识
图片是由什么组成的?
图片由一个像素一个像素组成,每个像素是一个点,其颜色是三原色组成的一个颜色。
上图宽度像素318,高度像素237。
RGB和RGBA
RGB图片和RGBA图片的区别在于,RGB图片表示红、绿、蓝三个通道的颜色,每个通道的取值范围都是0-255,而RGB图片则表示红、绿、蓝以及透明度通道的颜色,每个通道的取值范围都是0-1。
RGB图片比RGB图片多了一个透明度通道,可以用来控制图像的透明度。
在实际使用中,RGB图片通常用于需要进行透明度处理的场景,如CSS滤镜等。
RGB图片:没有“透明度”或“alpha”字样,通常以“.png”、“.jpg”、“.bmp”等格式保存。
RGBA图片:文件扩展名为“.png”时,该文件可能包含透明度信息。
灰度值和灰度图像
以前没有彩色电影,都是黑白电影。
以前没有彩色电视,都是黑白电视。
以前没有彩色相机,都是黑白相机。
以前没有彩色手机,都是黑白手机。
这种图片是怎么组成的呢?
这种图片叫灰度图像,一个重要的参数就是灰度值。
灰度值指黑白图像中点的颜色深度,范围一般从0到255, 白色为255,黑色为0。
字符画是怎么生成的呢?先生成灰度图,再生成字符图
RGB图生成灰度图
RGB图是怎么生成灰度图呢?
gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
注意这个公式并不是一个真实的算法,而是简化的公式,真实的公式更复杂一些,不过在我们的这个应用场景下并没有必要使用真实的公式。
灰度图生成字图图
灰度图是怎么生成字符图呢?
灰度值不是0~255嘛,将这256个字符映射到N个字符中即可。
unit = (256.0 + 1)/length
txt = ascii_char[int(gray/unit)]