20211202《Python程序设计》实验四 Python综合实践实验报告

20211202《Python程序设计》实验四 Python综合实践实验报告

 

课程:        《Python程序设计》
班级:        2112
姓名:        王金烁
学号:        20211202
实验教师:  王志强
实验日期:  2022年5月24日
必修/选修: 公选课

 

一、实验内容

 

1.灵感来源:

       一个是平时看视频的时候会有照片由近及远组成大图片的特效,一个是高中是刷到程序员表白时会用程序打成图片,就想试试能不能拿python做一个类似的程序。

 

2.主要内容:

     用学校各项活动的图片拼出“Python”并打印成图片。

 

 

二、实验过程及结果

  

1.实验内容

  Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。

  我做的是 照片墙

 

2.实验过程及结果

  确定文字和字体大小

 

  引用pygame模块初始化,确定字体

 

  渲染字体,进行锯齿化和确定颜色

 

 

  获取字体的宽高

 

  获取像素点颜色

 

  根据像素点分类,做二维列表:黑色添加 1 ,白色添加 0 .

  引用图像处理模块创建图片

 

  初始化图片尺寸根据0,1贴图。

  用os模块获取图片,用random模块随机选取,修改图片大小。

 

  图片强保存

 

 

实验代码:

import pygame

text = '233'
font_size = 10

pygame.init()
font = pygame.font.Font('simhei.ttf',font_size)
print(font)

font_text = font.render(text, True, (0, 0, 0,),(255, 255, 255))
print(font_text)

height = font_text.get_height()
width = font_text.get_width()
print('height: ',height)
print('width: ',width)

print(font_text.get_at((1,1))[0])

image_row_list = []
for x in  range(height):
    image_col_list = []
    for y in range(width):
        if font_text.get_at((y,x))[0] != 255:
            image_col_list.append(1)
        else:
            image_col_list.append(0)
        image_row_list.append(image_col_list)
    for row in image_row_list:
        print(row)

from PIL import Image

width_len = len(image_row_list[0])
height_len = len(image_row_list)

new_image = Image.new('RGB', (width_len * 100 , height_len * 100 ),(255,255,255))

import os
import random

img_size = 100

for row in range(height_len):
    for clo in range(width_len):
        if image_row_list[row][clo] == 1 :
            source_image = Image.open('images\\' + random.choice(os.listdir(r'images')))
            source_image = source_image.resize((img_size,img_size), Image.Resampling.LANCZOS)
            new_image.paste(source_image,(clo * img_size, row * img_size))


print('正在生成...')

new_image.save(text +'.jpg')

print('保存完毕,请在当前文件项目下查找')

 

上传ESC服务器

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

  问题1:无法安装pygame及pillow

  解决方法:关闭汉化补丁

  问题2:输出文字长宽比例失调

  解决方法:查资料询问老师进行单步调试修改for循环

  问题3:无法生存保存图片

  解决方法:减小图片尺寸和图片大小,替换文本,替换字体

  问题4:ESC服务器无法下载pygame和pillow(  pip install   xxxxx  )

  解决方法:CSDN搜索,更新pip。(CSDN yyds)

  ……………………

  (真要做起来问题真的好多,改代码查资料头疼,不过能做完真的太好了!)

 

4.其他(感悟、思考等)

  python结课了,但是我对于python的感受和老师的一段代码一样,“人生苦短,我用python”。

 

 第一次接触编程还是高中时学的c++,对编程产生了兴趣,但毕竟学业为重,高二下就没有再开课。王老师带我入门,学习python,教会了我很多东西,包括很多资料,很多学习的方法,让我感到了不同语言间不同的美妙之处,而且python用起来确实非常方便。当然,王老师带我走进python的殿堂,后面的学习更多的还是要靠我们自己。老师上课常常能通过一些实例达到学习的目的,不仅学到了知识,也完成了实际操作代码,这种方法是我很喜欢的而且效果也很好。

 很高兴能选了python这门课,虽然有些知识我依旧没有吃透,但是学无止境,希望我能保持对python的热情,也希望以后能与老师交流专业知识。

 

posted @ 2022-05-25 18:55  草木灰138  阅读(572)  评论(0编辑  收藏  举报