Python项目——表白照片墙

1、介绍

  • 利用女神的照片,组成女神的名字,向女神表白。如下图:
    • Python项目——表白照片墙_第1张图片
  • 原理:获取每个像素点的颜色,白色不贴图,黑色贴图。
2、工具
  • 语言:python3.11
  • 编译器:PyCharm
  • 包:pygame
    • pip install pygame
  • 包:PIL
    • pip install pillow
  • 字体文件:simkai.ttf(本地有自带的字体文件,自行选择) 
    • Python项目——表白照片墙_第2张图片
  • 女神图片:
    • Python项目——表白照片墙_第3张图片
    • Python项目——表白照片墙_第4张图片

3、代码

  • import pygame  # 字体处理功能
    from PIL import Image  # 图像处理模块
    import random
    import os
    
    text = '迪丽热巴'  # 照片墙文字
    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)  # 黑色添加数据1
            else:
                image_col_list.append(0)  # 白色添加数据0
        image_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_image
                new_image.paste(source_image, (y * img_size, x * img_size))
    
    # 照片强保存
    print('正在生成照片墙...')
    new_image.save(text + '.png')
    print('生成完毕')

4、运行结果

  • Python项目——表白照片墙_第5张图片
  • Python项目——表白照片墙_第6张图片
  • Python项目——表白照片墙_第7张图片

你可能感兴趣的:(Python,python,开发语言)