加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

用Python怎样把图片转字符画 方法是哪几种

发布时间:2023-09-18 10:55:33 所属栏目:语言 来源:
导读:在这篇文章中我们来了解一下“用Python怎样把图片转字符画,方法是什么”,一些朋友可能会遇到这方面的问题,对此在下文小编向大家来讲解,内容详细,易于理解,希望大家阅读完这篇能有收获哦,有需要的朋

在这篇文章中我们来了解一下“用Python怎样把图片转字符画,方法是什么”,一些朋友可能会遇到这方面的问题,对此在下文小编向大家来讲解,内容详细,易于理解,希望大家阅读完这篇能有收获哦,有需要的朋友就往下看吧!

字符画:字符画是一系列字符的组合,我们可以把字符看作是比较大块的像素,一个字符能表现一种颜色,字符的种类越多,可以表现的颜色也越多,图片也会更有层次感。

如果我们想要手工绘制出字符画,首先要有扎实的美术基础,其次还要花费大量的时间和精力。但是我们可以使用Python,只需要几行代码,就能够将一张图片轻而易举地转化为一个字符画。

实例1

理论很简单,就是对图片操作,这里需要用到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

实例2

下面是源码:

# -*- 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的文件。

以上就是关于“用Python怎样把图片转字符画,方法是什么”的介绍了,感谢各位的阅读,如果大家想要了解更多相关的内容,小编每天都会为大家更新不同的知识。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章