zoukankan      html  css  js  c++  java
  • 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 += ' '

        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世界里还有很多有趣的小实验,学了这门入门课,各种十行代码的小程序,对照着一些视频,自己就能轻松掌握了。

  • 相关阅读:
    SQL SERVER 2005添加用户和编辑sa
    数组型参数和数组的区别
    Oracle数据库建库、建表空间,建用户
    oracle表空间操作详解
    Oracle10g的完全卸载(转载)
    Delphi format的用法
    AnImateWindow用法
    文本文件操作
    TStringList的用法
    Delphi网络函数
  • 原文地址:https://www.cnblogs.com/jiangzhuo/p/13124172.html
Copyright © 2011-2022 走看看