20193316 《Python程序设计》实验四报告

20193316  《Python程序设计》实验四报告

 

 

课程:《Python程序设计》

班级: 1933

姓名: 姜灼

学号:20193316

实验教师:王志强

实验日期:2020年6月4日

必修/选修: 公选课

 

 

  1. 1.   实验内容:图片转字符画小工具

 

 

2. 实验过程及结果

 

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,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)]

 

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)

 

结果展示:

 

 

 

 

 

 

3码云链接:

https://gitee.com/python_programming/A20193316/issues/I1KJCD

 

 

 

 

 

4. 实验过程中遇到的问题和解决过程

问题:不太了解argpars库

问题解决方案:在网上求助,自学看视频,逐渐学会了相关知识点。

问题:按照网上的教程弄的pillow图像处理库无法打开

问题解决方法:标准版本的show()方法不是很有效率,因为它先将图像保存为一个临时文件,然后用xv进行显示,。如果没有安装xv,该函数甚至不能工作。

 

 

5.课程感悟:  总的来说是一门不错的变成语言入门课。学完王老师的python课之后,对python这门语言的整体框架有了一个宏观的了解,还提升了自学能力,以及其他一些改变自身拖延症等其他毛病的解决方案。虽然在python很多细节方面学得还不够深入,但是作为一门公选课,相比于其他的课程,王老师的课程性价比已经相当地高了,正所谓“师傅领进门,修行在个人”。Python世界里还有很多有趣的小实验,学了这门入门课,各种十行代码的小程序,对照着一些视频,自己就能轻松掌握了。

 

posted @ 2020-06-14 11:26  Costa-Rica  阅读(145)  评论(1编辑  收藏  举报