python之PIL库拆分图片

前言

最近在做一个mmo的游戏,里面的大地图是一张非常巨大的图片,我们要根据玩家所在的位置,动态加载地块,这就需要我们把这张大图拆分成n行m列,本来想着美术就可以拆了,但是因为图片太多,给美术也增加了不少工作量,于是,我就想到了强大的PIL,果断花费30分钟,给美术写了一个快速批量拆分图片的工具。
废话不多说,代码逻辑也不复杂,直接上代码吧

from PIL import Image
import os

# 图片文件夹路径
root_path = "C:/Users/jzq/Desktop/Test/"
out_path = "C:/Users/jzq/Desktop/Test/"
# 后缀
ext_name = '.png'
# 图片名集合
forders = [
    #  图片名          切割行数     切割列数
    {
    
    "name": "11002", "row": 12, "column": 16},
]

def image_split(file):
    img_name = file["name"]
    split_row = file["row"]
    split_col = file["column"]
    image_size = 256

    # 拼接图片路径
    img_src = root_path + img_name + ext_name
    # 拼接图片保存路径
    save_root = out_path + img_name + "/"
    if not os.path.exists(save_root):
        os.makedirs(save_root)

    print("split image:"+img_name)
    # 开始分割图片
    img_now = Image.open(img_src)
    index = 0
    for r in range(split_row):
        for c in range(split_col):
            row = split_row - r - 1
            col = c
            split_area = (image_size * col, row * image_size, image_size * col + image_size, row * image_size + image_size)
            save_path = save_root + img_name + "_" + str(index) + ext_name;
            index = index + 1
            # print(row, col, save_path)
            img_now.crop(split_area).save(save_path)


if __name__ == '__main__':
    for i in range(0, len(forders)):
        image_split(forders[i])

猜你喜欢

转载自blog.csdn.net/qq563129582/article/details/126280448