python制作任意形式照片墙

用python做任意文字图片墙
今天应产品经理夫人的要求,需给其做一张“青春”图与“爱心”图。
安排!!!
直接上代码:

import pygame
from PIL import Image
import os
import random

text = input("请输入你想要的文字:")
# text = '青春'

font_size = 30  # 字体大小

pygame.init()  # 模块的初始化  为什么  pygame不是我开发的, 我们用的别人  python语法  三原色
font = pygame.font.Font('F:\\quantu\\simsun.ttc', font_size)#需要自行下载ttc文件![在这里插入图片描述](https://img-blog.csdnimg.cn/81ce7ab747cc4d86862eccc32fb0c285.png#pic_center)

print(font)

# 字体的渲染
# True 锯齿化   rgb 颜色 由三原色组成  黑  白
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)  # 黑色添加数据1
        else:
            image_col_list.append(0)  # 白色添加数据0
    image_row_list.append(image_col_list)

for row in image_row_list:
    print(row)

#心形图二维列表
map = [
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1],
    [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1],
    [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1],
    [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1],
    [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1],
    [1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
]


# 贴图  照片墙  任意文字的
# width_len = len(image_row_list[0])  # 列表的宽
# height_len = len(image_row_list)  # # 列表的高
#心形的
width_len = len(map[0])  # 列表的宽
height_len = len(map)  # # 列表的高
# 创建图片
new_image = Image.new('RGB', (width_len * 100, height_len * 100), (255, 255, 255)) #图片背景纯色
# new_image = Image.open(r"F:\桌面\爬虫100\怕图片\src\·你算什么东西?.jpg").resize((width_len * 100, height_len * 100), Image.ANTIALIAS)#图片背景照片替换
# print(new_image.size())
# 贴图
img_size = 100  # 初始图片尺寸
# print(os.listdir(r'F:\\桌面\\爬虫100\\怕图片\\src'))
for row in range(height_len):
    for clo in range(width_len):
        # if image_row_list[row][clo] == 1:  # 如过列表的值为1, 就贴图  任意文字
        if map[row][clo] == 0:  # 如过列表的值为1, 就贴图  心形
            # 读取图片
            source_image = Image.open('F:\\1\\心形图素材\\' + random.choice(os.listdir(r'F:\\1\\心形图素材')))
            # 修改图片的大小
            source_image = source_image.resize((img_size, img_size), Image.ANTIALIAS)
            # 将图片复制到new_image
            new_image.paste(source_image, (clo * img_size, row * img_size))

# 照片强保存
print('正在生成照片墙...')
new_image.save(text + '.png')
print('保存完毕, 请在当前文件项目下查找')

在这里插入图片描述
心形图
青春图
傻瓜图

  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
制作照片的方法有很多种,其中一种简单的方法是使用Python的Pillow库来操作图片。以下是一个简单的Python程序,可以将给定文件夹中的所有图片合成为一个照片。 首先,你需要安装Pillow库: ``` pip install Pillow ``` 然后,可以使用以下代码来制作照片: ```python from PIL import Image import os # 设置照片的大小和每张照片的大小 wall_width = 800 wall_height = 600 image_width = wall_width // 4 image_height = wall_height // 4 # 设置照片的背景颜色 wall_color = (255, 255, 255) # 设置照片所在的文件夹 image_folder = 'path/to/folder' # 获取文件夹中所有图片的路径 image_paths = [os.path.join(image_folder, f) for f in os.listdir(image_folder) if f.endswith('.jpg')] # 计算照片的行数和列数 num_rows = wall_height // image_height num_cols = wall_width // image_width # 创建一个新的空白照片 wall = Image.new('RGB', (wall_width, wall_height), wall_color) # 遍历所有照片,并将它们放置在照片上 for i, path in enumerate(image_paths): # 打开照片并调整大小 image = Image.open(path) image = image.resize((image_width, image_height)) # 计算照片应该放置的位置 row = i // num_cols col = i % num_cols x = col * image_width y = row * image_height # 将照片放置在照片上 wall.paste(image, (x, y)) # 显示照片 wall.show() # 保存照片到文件 wall.save('path/to/wall.jpg') ``` 这个程序将会把给定文件夹中的所有jpg图片合并成一个800x600的照片,并且保存到文件中。你可以根据需要调整照片的大小和每张照片的大小,也可以修改照片的背景颜色。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值