900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Python实现图片转化为字符图(附完整代码)

Python实现图片转化为字符图(附完整代码)

时间:2022-06-16 08:52:37

相关推荐

Python实现图片转化为字符图(附完整代码)

工作原理:

先将图片每个像素的hsv(色相,饱和度,明度)值转化为可读取对象,使用到PIL的Image方法:

from PIL import Imageimg = Image.open('test.png')hsv = img.convert('HSV').load()

再将图像按v用取平均值的方法进行压缩,最后根据压缩后图像的每个像素点的v值转换成字符进行输出

运行效果:

原图:

转化后:

完整代码:

scale表示图片的压缩倍率,压缩后图像的宽度和高度都为原图的除以scale

fit_table表示转化后的图片由哪些字符构成,按明度从低到高排列,长度应在1-255之间,长度越长图像对比度越高,画质越好

from PIL import Imagefrom math import ceil# 图片压缩倍率scale = 1# 获取图像hsvimg = Image.open('test.png')hsv = img.convert('HSV').load()new_img = [[0 for i in range(ceil(img.width / scale))] for x in range(ceil(img.height / scale))]# 图像压缩for x in range(0, img.width, scale):for y in range(0, img.height, scale):_v = 0num = 0for x1 in range(scale):for y1 in range(scale):if x + x1 < img.width and y + y1 < img.height:_v += hsv[x + x1, y + y1][2]num += 1new_img[y // scale][x // scale] = _v // num# 转化字符(明度从低到高排列)fit_table = ['魍', '恼', '且', '不', '一']text = ''# 转文本for y in new_img:for x in y:text += fit_table[x // (255 // len(fit_table) + 1)]text += '\n'print(text)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。