1. 程式人生 > 其它 >20211202《Python程式設計》實驗四 Python綜合實踐實驗報告

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的熱情,也希望以後能與老師交流專業知識。