1、介绍
- 利用女神的照片,组成女神的名字,向女神表白。如下图:
- 原理:获取每个像素点的颜色,白色不贴图,黑色贴图。
2、工具
- 语言:python3.11
- 编译器:PyCharm
- 包:pygame
-
pip install pygame
-
- 包:PIL
-
pip install pillow
-
- 字体文件:simkai.ttf(本地有自带的字体文件,自行选择)
- 女神图片:
3、代码
-
import pygame # 字体处理功能 from PIL import Image # 图像处理模块 import random import ostext = '迪丽热巴' # 照片墙文字 font_size = 30 # 字体大小pygame.init() # 文字初始化 font = pygame.font.Font('simkai.ttf', font_size) # 参数:文字文件,字体大小# 字体渲染 font_test = font.render(text, True, (0, 0, 0), (255, 255, 255)) # 参数:文件,锯齿化,黑色,白色# 获取字体的宽高 height = font_test.get_height() # 字体高度 width = font_test.get_width() # 字体宽度# 根据像素点颜色做分类,划分为一个二维列表 image_row_list = [] # 二维列表 for x in range(height):image_col_list = [] # 行for y in range(width):if font_test.get_at((y, x))[0] != 255: # 用元组的第一个元素判断颜色image_col_list.append(1) # 黑色添加数据1else:image_col_list.append(0) # 白色添加数据0image_row_list.append(image_col_list)# 创建图片 new_image = Image.new('RGB', (width * 100, height * 100), (255, 255, 255)) # 参数:图片以像素展示,图片宽高,图片背景颜色# 贴图 img_size = 100 # 初始图片尺寸 for x in range(height):for y in range(width):if image_row_list[x][y] == 1: # 如过列表的值为1, 就贴图# 读取图片,随机读取图片source_image = Image.open('images\\' + random.choice(os.listdir(r'images')))# 修改图片的大小source_image = source_image.resize((img_size, img_size), Image.LANCZOS)# 将图片复制到new_imagenew_image.paste(source_image, (y * img_size, x * img_size))# 照片强保存 print('正在生成照片墙...') new_image.save(text + '.png') print('生成完毕')