博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python3----练习题(图片转字符画)
阅读量:5105 次
发布时间:2019-06-13

本文共 1675 字,大约阅读时间需要 5 分钟。

1 import argparse 2 from PIL import Image 3  4 def parse_param(): 5     parser = argparse.ArgumentParser()   # 命令行输入参数处理 6  7     parser.add_argument("input_file")  # 输入文件 8     parser.add_argument("out_file")    # 输出文件 9 10     parser.add_argument("--width", type=int, default=50)  # 输出字符画宽11     parser.add_argument("--height", type=int, default=50)  # 输出字符画高12 13     args = parser.parse_args()   # 获取参数14     width, height, input_file, out_file = args.width, args.height, args.input_file, args.out_file15     return width, height, input_file, out_file16 17 def get_char(r, g, b, alpha=256):18     '''19     gray / 256 = x / len(ascii_chra)20 21     '''22     if alpha == 0:23         return " "24     gray = (2126 * r + 7152 * g + 722 * b)/1000025     # 将256灰度映射到70个字符上26     ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")27     x = int((gray / (alpha + 1.0)) * len(ascii_char))28     return ascii_char[x]29 30 def write_file(out_file_name, content):31     with open(out_file_name, "w") as f:32         f.write(content)33 34 def main(file_name="test.jpg", width=80, height=80, out_file_name="out_file"):35     text = ""36     im = Image.open(file_name)37     im = im.resize((width, height), Image.NEAREST)38     for i in range(height):39         for j in range(width):40             content = im.getpixel((j, i))41         text += get_char(*content)42         text += "\n"43     print(text)44     write_file(out_file_name, text)   # 字符画出到文件45 46 47 if __name__ == '__main__':48     main()49 50 51 52 图片测试:53 http://labfile.oss.aliyuncs.com/courses/370/ascii_dora.png

待完善.......

转载于:https://www.cnblogs.com/jonm/p/8351754.html

你可能感兴趣的文章
SQLServer之删除视图
查看>>
js forEach跳出循环
查看>>
MyBatis---动态SQL
查看>>
快速创建一个 spring mvc 示例
查看>>
swing入门教程
查看>>
好莱坞十大导演排名及其代表作,你看过多少?
查看>>
JVM-class文件完全解析-类索引,父类索引和索引集合
查看>>
Loj #139
查看>>
StringBuffer是字符串缓冲区
查看>>
hihocoder1187 Divisors
查看>>
java入门
查看>>
Spring 整合 Redis
查看>>
Azure 托管镜像和非托管镜像对比
查看>>
SQLite3初探
查看>>
多线程/多进程/异步IO
查看>>
leetcode 442. 数组中重复的数据 java
查看>>
struts2 文件上传下载注解示例
查看>>
编写一个简单的JAVA WEB Servlet页面
查看>>
JSP:Cookie实现永久登录(书本案例)
查看>>
js window.open 参数设置
查看>>