python第四次实验(大作业)

学号 20202116 《Python程序设计》实验报告

课程:《Python程序设计》
班级: 2021
姓名: 李鸿略
学号:20202116
实验教师:王志强
实验日期:2021年6月13日
必修/选修: 公选课

1.实验内容

Python综合实践,从小到大喜欢画(但是不会画),特别喜欢看别人画画,也特别喜欢看别人用一些废弃的物品组成一幅好看的画。既然废品都能画画,那我觉得利用字母画画也是可行的,恰巧在网上看到有许多dalao有相关的教程,其中内容也包含了较多python的知识点,不妨用来完成我的期末大作业。


 2. 实验过程及结果

原理十分简单:

将彩图导入程序—>将彩图转换成灰图—>灰图转换成字符

首先导入PIL库用于处理图片

 

 

 

然后定义类 save 来读写文本(后面用)

Getchars用于利用字符串来替换灰度

当然,饭要一口一口吃,在彩图情况下,每一个像素点返回的是一个tuple ,里面是它的RGB值。但是无论我们使用R、G还是B都不能很好表示该点的颜色深度,所以,我们要先把他转换为灰色图  函数:img = img.convert('L') 

 

 

 

换了之后图是这样子的

 

 

灰图在函数getpixel中返回颜色深度,我们可以利用字符占黑比(就是字符有多黑)比较,在不同深浅的地方采取不同的字符替换

因为图片像素点太多了,我们要先重置图片大小,把像素减少再进行比较

 

效果图:

 

 

 

是不是很像?(bushi)原因在于可利用的字符只有八种,实在太少。因此我们要增多字符的个数,当然range也要变

 

 

 

 

 算你有只猫样

我们可以增加图像的像素,让他看起来更像他自己

 

 


 3. 实验过程中遇到的问题和解决过程
- 问题1:一开始不知道彩图在函数getpixeGB 返回的是RGB元组,元组不能和整形数比较

- 问题1解决方案:所以要把彩图转化为灰图
- 问题2:Traceback (most recent call last):

  File "C:\Users\Hungloek\Desktop\python\picturechange.py", line 60, in <module>

    line += get_chars(pi)

  File "C:\Users\Hungloek\Desktop\python\picturechange.py", line 19, in get_chars

    return chars[15 - k]

IndexError: list index out of range
- 问题2解决方案:这里是创造更多的字符,让颜色区别度更大,但是忘记调整range的范围,导致了list index out of range,所以我们要根据字符数来调整range。

感悟:python帮助我打开了编程的新的大门。它拥有许许多多强大的第三方库,使我可以轻轻松松使用原来我可能一两年都编不出来的函数,使我在解决实际问题时更加轻松。本学期,我们学习了python输入输出 条件与循环、序列、字符串、函数、面向对象、数据库、socket、爬虫等等内容。与c语言相比,python更加人性化。这次大作业因为我实现没有学习PIL,因此处理起来还是相当麻烦,等之后有机会,准备尝试着先利用爬虫爬取如何实现字符串画画的大量资料,聚集起来学习透彻之后,再去实现编程。最后,感谢王志强老师带领我走入python的世界,希望以后能和老师一起继续探讨更多有关计算机的知识!

 

posted @ 2021-06-14 00:31  Hungloek  阅读(605)  评论(0编辑  收藏  举报