利用Python画一张全是日落的地图

2023-06-21 15:47:38 浏览数 (1)

环境准备

1.个人喜欢的日落/其他图片

2.python3.10

3.PIL库

4.轮廓可以换成任意

效果图

代码

代码语言:javascript复制
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公开仓库拉取,原代码作者暂未找到,后续各位发现请及时与我联系

0 人点赞