用Python怎样把图片转字符画,方法是什么
Admin 2022-10-31 群英技术资讯 507 次浏览
在这篇文章中我们来了解一下“用Python怎样把图片转字符画,方法是什么”,一些朋友可能会遇到这方面的问题,对此在下文小编向大家来讲解,内容详细,易于理解,希望大家阅读完这篇能有收获哦,有需要的朋友就往下看吧!
如果我们想要手工绘制出字符画,首先要有扎实的美术基础,其次还要花费大量的时间和精力。但是我们可以使用Python,只需要几行代码,就能够将一张图片轻而易举地转化为一个字符画。
效果图:
理论很简单,就是对图片操作,这里需要用到PIL的python包,里面有很好用的图像处理功能。
先打开图片,把图像调整大小:
img = Image.open(picPath) img = img.resize((picW, picH))
然后读取灰度值,再把灰度值和字符对应起来就行。
from PIL import Image lstChars = list("$@B%8&WM#*oahkbdpqwmZO0QLaCJUYXzczjhdhsdavunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'.") def oneChars(r, g, b, alpha = 256): global lstChars length = len(lstChars) gray = int(0.2126 * r + 0.7152 * g + 0.722 * b) index =length*gray return lstChars[index] picPath = "C:\Users\Administrator\Desktop\\aaaaa\\aa.png" picH = 40 picW = 80 img = Image.open(picPath) img = img.resize((picW, picH)) txt = "" for y in range(picH): for x in range(picW): txt += oneChars(img.getpixel((x, y))) txt += '\n' print txt
下面是源码:
# -*- coding=utf-8 -*- from PIL import Image IMG = 'IMG.jpg' # 设置图片文件 WIDTH = 150 # 设置字符画的宽 HEIGHT = 80 # 设置字符画的高 OUTPUT = 'T.txt' # 设置存放字符画的文本文件 ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ") # 设置显示的字符集 # 将256灰度映射到70个字符上 def get_char(r, g, b, alpha=256): # alpha为透明度 # 判断 alpha 值,为0表示全透明 if alpha == 0: return ' ' # 获取字符集的长度,这里为 70 length = len(ascii_char) # 将 RGB 值转为灰度值 gray,灰度值范围为 0-255 gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b) # 灰度值范围为 0-255,而字符集只有 70 # 需要进行如下处理才能将灰度值映射到指定的字符上 # 防止当灰度值为255时,输出的第70个字符超出列表索引,所以需要将(255+1) unit = (255.0 + 1) / length # 返回灰度值对应的字符 return ascii_char[int(gray / unit)] if __name__ == '__main__': # 打开并调整图片的宽和高 im = Image.open(IMG) im = im.resize((WIDTH, HEIGHT), Image.NEAREST) # 初始化输出的字符串 txt = "" # 遍历图片中的每一行 for i in range(HEIGHT): # 遍历该行中的每一列 for j in range(WIDTH): # 将 (j,i) 坐标的 RGB 像素转为字符后添加到 txt 字符串 txt += get_char(*im.getpixel((j, i))) # 遍历完一行后需要增加换行符 txt += '\n' # 输出到屏幕 print(txt) with open(OUTPUT, 'w') as f: f.write(txt)
直接粘贴即可,只需要在文件夹中导入一张图片重命名为IMG.jpg。运行结果会生成一个名为T.txt的文件。
原图:
生成文件图:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
Python内置函数-float()函数。float() 函数用于将整数和字符串转换成浮点数。
在Python里一切都是对象(object),基本数据类型,如数字,字符串,函数都是对象。对象可以由类(class)进行创建。那么既然一切都是对象,那么类是对象吗?是的,类也是对象,那么又是谁创造了类呢?答案也很简单,也是类,一个能创作类的类,称之为(type)元类
我们知道视图是 MTV 设计模式中的 V 层,它是实现业务逻辑的关键层,因此视图是需要掌握的。为了让大家更了解视图,这篇文章就给大家分享Django视图函数的使用,感兴趣的朋友就继续往下看吧。
本文主要介绍了Python datacompy 找出两个DataFrames不同的地方,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧<BR>
大家好,本篇文章主要讲的是Python中ROC曲线绘制,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008