图片转字符画(Python)

一、用到的库

1.Pillow

Pillow用于解析、处理图片。

一般来说,第三方库都会在Python官方的pypi.python.org网站注册,要安装一个第三方库,必须先知道该库的名称,可以在官网或者pypi上搜索,比如Pillow的名称叫Pillow,因此,安装Pillow的命令就是:pip install Pillow

耐心等待下载并安装后,就可以使用Pillow了:

图片转字符画(Python)_第1张图片
image.png
2.argparse

argparse解析命令行参数。

二、思路

1.用灰度值公式将像素的rgb值转换成灰度值
2.创建一个灰度值的映射字符列表
3.打印字符,输出到txt文件

三、用法

python ascii.py file -o .output.txt --width 40 --height 40
file 是需要转换的图片的路径
-o 、–width 、 –height 为可选参数,分别是输出的文件路径、设置图片宽度和高度

四、代码如下:

from PIL import Image
import argparse

# 参数处理
parser = argparse.ArgumentParser()

parser.add_argument('file')
parser.add_argument('-o','--output')
parser.add_argument('--width',type = int ,default = 60)
parser.add_argument('--height',type = int, default = 40)

args = parser.parse_args()

IMG = args.file
WIDTH = args.width
HEIGHT = args.height
OUTPUT = args.output

# 变量ascii_char: 存储用于显示图片的字符种类。我们要注意到,这个list的最后一个元素是空格,这表示,我们
# 将使用空格来代替原图片中灰度值最高的像素点(在灰度图像中,灰度值最高为255,代表白色,最低为0,代表黑色)。
# list中的第一个元素是$,这表示我们将使用$来代替原图片中灰度值最低的像素点。其余字符依此类推。

ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!;:,\"^`'.")

# 把RGB转为灰度值,并且返回该灰度值对应的字符标记
def get_char(r,b,g,alpha = 256):
    if alpha == 0:
        return ' '
    length = len(ascii_char)
    gray = int(0.2126*r+0.7152*g+0.0722*b) #‘RGB-灰度值’转换公式

    unit = (256.0+1)/length
    return ascii_char[int(gray/unit)]

if __name__ == '__main__':
    im = Image.open("E:\\py\\22.jpg")
    im = im.resize((WIDTH,HEIGHT),Image.NEAREST)

    txt = ""

    for i in range(HEIGHT):
        for j in range(WIDTH):
            txt += get_char(*im.getpixel((j,i)))
        txt += '\n'

    print (txt) #因为python3.X版本与python2.X版本输出方式不同,在python3.X的,输入内容时都要带上括号python(),否则报错:SyntaxError: Missing parentheses in call to 'print',而在2.X中直接输出就没有问题

    if OUTPUT:
        with open(OUTPUT,'w') as f:
            f.writh(txt)
    else:
        with open("output.txt",'w') as f:
            f.write(txt)

五、运行代码:

在安装好环境之后,将上面程序保存为yy.py ,并将其拖到命令窗口,后面加上图片名称,然后输入:

python yy.py 22.jpg

yy.py是你当前的python文件名,然后 22.jpg是你要转换的图片,图片与py文件要保存在同一个目录。
执行结果如下:

图片转字符画(Python)_第2张图片
image.png

原图为:

图片转字符画(Python)_第3张图片
22.jpg

参考文章:http://blog.csdn.net/qq_35037977/article/details/75367157

你可能感兴趣的:(图片转字符画(Python))