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