栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python小图切割成大图 Unity解析复古资源

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python小图切割成大图 Unity解析复古资源

复古资源地图大多大于16384*16384(unity创建的最大贴图) 所以将地图切割成小图保存到本地 交给python处理

# 小图拼接成大图
# 由于Unity不能创建超过16384的Texture, 所以用Python解决
import PIL.Image as Image
import os
import json
import time
import sys

Image.LOAD_TRUNCATED_IMAGES = True

# 图片大小上线
Image.MAX_IMAGE_PIXELS = None
debug = sys.gettrace()

if debug :
    print("Debug模式n")
    savePath = 'E:\RXCQ\map\bigImage\'
    pathRoot = 'E:\RXCQ\map\tiles'
    thumbnailRoot = 'E:\RXCQmap\thumbnails\'
else:
    print("Release模式n")
    savePath = sys.argv[2]
    pathRoot = sys.argv[1]

filePaths = os.listdir(pathRoot)
global fileIndex
fileIndex = 0

if not os.path.exists(savePath):
    os.makedirs(savePath)

def merge(path):
    global fileIndex
    fileIndex += 1

    paths = os.listdir(path)
    base_name = os.path.basename(path)
    jsonPath = path + "\..\..\Json\" + base_name + ".json"
    with open(jsonPath, 'r', encoding = 'UTF-8') as f:
        load_dict = json.load(f)

    textureWidth = load_dict['width']
    textureHeight = load_dict['height']

    to_image = Image.new('RGB', (textureWidth, textureHeight))
    imageSavePath = savePath + base_name + '.jpg'

    if os.path.exists(imageSavePath):
        return

    length = len(paths)
    name = paths[length - 1].split('.')[0]
    x = int(name.split('_')[0]) + 1
    y = int(name.split('_')[1]) + 1

    index = 0
    count = x * y
    for i in range(0, x):
        for j in range(0, y):
            index += 1
            imageFileName = str(i) + "_" + str(j)
            imagePath = path + "\" + imageFileName + ".jpg"
            from_image = Image.open(imagePath)
            to_image.paste(from_image, (j * from_image.width, i * from_image.height))
            progress = int(index / count * 100)
            print("r", end="")
            print("小图拼接到大图: {}%, {}, 当前地图名字: {} ".format(progress, "{}/{}".format(fileIndex, len(filePaths)), base_name), end="")

            sys.stdout.flush()
            time.sleep(0.01)

    to_image.save(imageSavePath)

    # 生成缩略图
    Thumbnail(to_image, base_name, 600, 400)

def mergeImages():
    for i in range(0, len(filePaths)):
        filePath = pathRoot + "\" + filePaths[i]
        merge(filePath)

def Rename():
     for i in range(0, len(filePaths)):
        filePath = pathRoot + "\" + filePaths[i]
        paths = os.listdir(filePath)
        base_name = os.path.basename(filePath)

        if len(paths) == 1 :
            suffix = paths[0].split('.')[1]
            newName = '0_0.' + suffix
            os.rename(filePath + '\' + paths[0], filePath + '\' + newName)
            print("重命名 {} To {}".format(paths[0], newName))

def Thumbnail(toImage, Name, Width, Height):
    # 生成缩略图
    size = Width, Height
    toImage.thumbnail(size)
    toImage.save(thumbnailRoot + Name + '.jpg')
    

Rename()
mergeImages()
print("n全部拼接完成, {}/{}".format(fileIndex, len(filePaths)))

合并后的

Unity解析怀旧资源

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/355111.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号