当前位置:
首页 > temp > python入门教程 >
-
什么叫程序员的浪漫,只要能用代码做成的都不叫事,Python制作炫酷七夕照片墙
第一步:导入所需的模块
import os import random import pygame # pip install pygame from PIL import Image # pip install pillow
第二步:先初始化模块
pygame.init()
第三步:定义字体,设定初始化大小
text = '七夕快乐' # 字体形状, 可以修改成名字 size = 30 # 字体大小 # 定义字体,参数依次是字体、字体大小 font = pygame.font.Font('msyh.ttc', size) print(font)
第四步:渲染字体
# 渲染字体,参数依次是被渲染的文字、是否无锯齿、字体颜色、背景颜色 # (0, 0, 0) 黑色 (255, 255, 255) 白色 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() # 宽度
第五步:像素值,指定成二维列表
# 最后所有像素点会成为一个二维列表(形如[[1,2,3],[4,5,6]]),image_row_list是最外层的、总的列表 image_row_list = [] for x in range(height): # image_col_list 是 image_row_list 中的每一个列表元素 image_col_list = [] for y in range(width): # get_at((x,y))是返回像素点的像素值,[0]为第一个值R, # 由于渲染后的图只有黑色和白色,所以只要[0]!=255,就是黑色 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)
第六步:根据矩阵贴图
# 获取 image_row_list 列表的宽度和高度 width = len(image_row_list[0]) height = len(image_row_list) # 设置最终输出的图片new_image,颜色模式RGB,宽和高分别放大100和100倍,背景色为白色。 new_image = Image.new('RGB', (100 * width, 100 * height), (255, 255, 255)) # 设置每一个(原图集)小图的裁剪尺寸 size = 100 # 遍历所有的像素点,如果像素点为1,也就是有颜色,则随机选择一张图片,将像素点填充为这张图片 for row in range(height): for col in range(width): if image_row_list[row][col] == 1: # 从本地读取文件 source_image = Image.open('images\\' + random.choice(os.listdir(r'images'))) # 重新修改文件大小 source_image = source_image.resize((size, size), Image.ANTIALIAS) # 是否使用抗锯齿(antialias)功能 # 将图片复制到 new_image new_image.paste(source_image, (col * size, row * size))
最后输出图片
print('正在生成照片墙...') new_image.save(text + '.jpg') print('生成完毕, 请在当前文件项目下找照片墙文件')
出处:https://www.cnblogs.com/qshhl/p/15134832.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数