利用Python画一张全是日落的地图
【摘要】 —theme: theme-orange — 环境准备1.个人喜欢的日落/其他图片2.python3.103.PIL库4.轮廓可以换成任意 效果图 代码from PIL import Imageimport osdef combine_pic(folder): # 读取地图轮廓图 img = Image.open("china.png") w,h = img.si...
—theme: theme-orange —
环境准备
1.个人喜欢的日落/其他图片
2.python3.10
3.PIL库
4.轮廓可以换成任意
效果图
代码
from PIL import Image
import os
def combine_pic(folder):
# 读取地图轮廓图
img = Image.open("china.png")
w,h = img.size
#新建与主图一样大的白色底图
new_img = Image.new('RGB',(w,h),'#FFFFFF')
unit_size = 60
#根据小格尺寸,计算大图可容纳小图数量
y_index = h//unit_size
x_index = w//unit_size
pic_list = []
for item in os.listdir(folder):
#对文件夹中的 jpg 图片格式筛选
if item.endswith(".jpg") or item.endswith(".jpeg") :
pic_list.append(item)
#获取素材图片数目
total = len(pic_list)
x=0
y=0
for i in range(x_index*y_index):
#提醒进度的语句
print(f"日落生成{i}/{x_index*y_index}")
try:
# 对素材图缩放至小格大小
test = Image.open(f"{folder}/" + pic_list[i%total]).resize((unit_size,unit_size), Image.ANTIALIAS)
except IOError:
print("有1位朋友的头像读取失败,跳过该头像") # 有些人没设置头像,就会有异常
continue
#将缩放成小格的素材图按顺序贴到白色底图上
new_img.paste(test,(x*unit_size,y*unit_size))
x+=1
if x==x_index:
x=0
y+=1
print("日落生成完毕!")
#将合成的素材图存至 out.jpg
new_img.save("out.jpg",quality=100)
#如果不想每次都生成图,可以运行一次后注释掉这句,参数为文件夹名字
combine_pic("qianxi")
#读取合成后的素材图
src1 = Image.open("out.jpg")
#读取地图轮廓图
src2 = Image.open("china.png")
src1.paste(src2,(0,0),src2)
src1.save("result.png")
# print("地图轮廓添加完毕!")
本代码为github公开仓库拉取,原代码作者暂未找到,后续各位发现请及时与我联系
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)