1 Star 0 Fork 0

王宇夫/python ASCII Generator

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
ascii.py 1.61 KB
一键复制 编辑 原始数据 按行查看 历史
王宇夫 提交于 2016-06-21 10:20 +08:00 . 图片转字符画
#!/usr/bin/env python
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
ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
# 将256灰度映射到70个字符上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)
#因为70个字符的数组下标范围是从0到69,如果不加1,灰度为256时会取下标为70,此时超出数组范围
unit = (256.0 + 1)/length
return ascii_char[int(gray/unit)]
if __name__ == '__main__':
#载入IMG的文件
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)
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/wangyufu/python-ASCII-Generator.git
git@gitee.com:wangyufu/python-ASCII-Generator.git
wangyufu
python-ASCII-Generator
python ASCII Generator
master

搜索帮助