处理简单的图片效果会更好一些
# coding:UTF-8
from PIL import Image
import os
def main():
# 获取当前工作目录
file_path = os.getcwd()
# 遍历所有文件
for file in os.listdir(file_path):
# 获取文件后缀
suff_name = os.path.splitext(file)[1]
# 过滤非pdf格式文件
if suff_name != '.jpg':
continue
# 获取文件名称
file_name = os.path.splitext(file)[0]
# jpg文件名称
jpg_name = os.getcwd() + '\\' + file
# 要转换的txt文件名称
txt_name = os.getcwd() + '\\' + file_name + '.txt'
ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
openl(ascii_char,jpg_name,txt_name)
# 将256灰度映射到70个字符上
def get_char(ascii_char,r, g, b, alpha=256):
if alpha == 0:
return ' '
length = len(ascii_char)
gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
unit = (256.0 + 1) / length
return ascii_char[int(gray / unit)]
def openl(scii_char,jpg_name,txt_name):
WIDTH = 140
HEIGHT = 40
im = Image.open(jpg_name)
im = im.resize((WIDTH, HEIGHT), Image.Dither.NONE)
txt = ""
for i in range(HEIGHT):
for j in range(WIDTH):
txt += get_char(scii_char,*im.getpixel((j, i)))
txt += '\n'
print(txt)
# 字符画输出到文件
with open(txt_name, 'w') as f:
f.write(txt)
main()
已使用PyInstaller库打包成了exe可执行文件:
https://wwt.lanzoub.com/i8oVp03rpz9a
密码:3wov