将图片转化为字符画

一、准备工作
1、准备一张简易照片,我是从百度上下载的一张树的照片,命名为tree.png(如下图),将其放置于要创建python的文件中(方便运行)
这里写图片描述
2、python(我的版本为python3.6)安装有pillow库
安装方式:pip install pillow(若可以pip安装的话,如果没有先安装pip工具)
3、创建的python文件中有个output.txt文件(有无皆可)


二、模块信息介绍
1.pillow:pillow实际是PIL(Python Image Libary)的升级版本,PIL功能非常强大,API也非常简单易用。但由于PIL仅支持到Python 2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python 3.x,又加入了许多新特性,因此,我们可以直接安装使用Pillow。(借用别人博客解释)
2.argparse是Python内置的一个用于命令项选择与参数解析的模块,通过在程序中定义好我们需要的参数,argparse将会从sys.argv中解析出这些参数,并自动生成帮助和使用信息。argparser常用的几个函数:
(1)使用ArgumentParser()创建对象
(2)调用add_argument()方法添加参数
(3)使用parse_args()解析添加的参数


三、代码

创建名为ImageTransformAsciiArt.py的python文件

#coding:utf-8
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=80)
parser.add_argument('--height',type=int,default=80)


#获取(解析)参数
args = parser.parse_args()

#将图片要素信息传递给字符画
IMG = args.file
WIDTH = args.width
HEIGHT = args.height
OUTPUT = args.output
#我们使用灰度值公式将像素的RGB值映射到灰度值
ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-T+G<>i!lI;:PASD. ")#最后一个需为空格,一般映射到图片空白部分,倒数第二个                      字母尽量用.或|这种包含性强的,使图片轮廓感更突出

# 将256个灰度映射到字符上
def get_char(r,g,b,alpha = 256):
    if alpha == 0:
        return ' '
    length = len(ascii_char)
    gray = int(0.2126*r+0.7156*g+0.0722*b)#灰度映射公式
    uint = 256/length       #进行映射
    return ascii_char[int(gray/uint)]

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):
            txt += get_char(*im.getpixel((j,i)))
        txt += '\n'#每行末尾进行换行
    print(txt)#命令框显示图形,有无皆可
    if OUTPUT:
        with open(OUTPUT,'w') as f:
            f.write(txt)
    else:
        with open('output.txt','w') as f:#若无文件则创建
            f.write(txt)

注:参考博客:http://blog.konghy.cn/2017/04/24/python-entry-program/


四、运行程序

在创建的Python文件中按住Shift并点击鼠标右键,选择“在此处打开命令窗口”,在命令窗口输入:python ImageTransformAsciiArt.py tree.png;
我们就会在命令框和output.txt中看到树的字符画了。

python新手学习总结,大神勿拍砖

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值