示例#1
0
def main():
    desktop = GetDesktopPath()
    test_belt_npk = '//sprite_character_swordman_atequipment_avatar_belt.npk'

    test_belt = NPK()
    test_belt.open(desktop + test_belt_npk)

    index_layer = {}

    for index, ana in test_belt.dictAna.items():
        img_name = ana[-1]

        simple_name = img_name.split('/')[-1]

        if 'mask' in simple_name or '(tn)' in simple_name or 'belt' not in simple_name:
            continue

        else:

            result = re.findall(r'([0-9]+)(.*)\.img', simple_name)
            if result:

                a = result[0]

                if a[0] in list(index_layer.keys()):
                    index_layer[a[0]].append(a[1])
                else:
                    index_layer[a[0]] = [a[1]]

    print(index_layer)
示例#2
0
def getImgContent(img2Dir, imgNameList, imgDict):
    """
    获取IMG名称与内容
    :param img2Dir: IMG2文件夹
    :param imgNameList: IMG名称列表
    :param imgDict: IMG词典
    :return: imgNameConDict[imgName] = imgContent
    """
    npkImgIndex = {}
    imgNameConDict = {}
    for imgName in imgNameList:
        npkName, imgIndex = imgDict[imgName]
        if npkName in list(npkImgIndex.keys()):
            npkImgIndex[npkName].append(imgIndex)
        else:
            npkImgIndex[npkName] = [imgIndex]

    for npkName, impIndexes in npkImgIndex.items():
        npkImgIndex[npkName] = list(set(impIndexes))
        npkObject = NPK()
        npkObject.open(img2Dir + '\\' + npkName)
        extractResult = npkObject.extractImg(npkImgIndex[npkName])
        # print(extractResult)
        if len(extractResult[1]) > 0:
            continue
        for dictV in extractResult[0].values():
            imgNameConDict[dictV[3]] = dictV[-1]

    return imgNameConDict
示例#3
0
def newImgNpkDict(img2Path, repeatFlag=False):
    npkFilePathList = lafed(img2Path)
    singleImgList = []  # ["1.img", "2.img", ~]
    img2NpkDict = {}  # {imgName: npkName}
    repeatImgNpk = {}  # {npkPath: [repeatImgIndex1,   repeatImgIndex2~]}
    errorImg = []

    def falseRepeatImg(npkDictA):
        for key in npkDictA.keys():
            name = npkDictA[key][-1]
            if name not in singleImgList and "(tn)" not in name:
                singleImgList.append(name)
                img2NpkDict[name] = [npkName, key]

    def trueRepeatImg(npkDictA):
        repeatImgIndex = []
        # -----------遍历NPK字典
        for key in npkDictA.keys():
            name = npkDictA[key][-1]
            index_ = key
            if name not in singleImgList and "(tn)" not in name:
                singleImgList.append(name)
                img2NpkDict[name] = [npkName, key]
            else:
                repeatImgIndex.append(index_)
        if len(repeatImgIndex) > 0:
            repeatImgNpk[npkName] = repeatImgIndex

    # 创建进度条······
    pBar = tqdm(npkFilePathList)
    for npkFile in pBar:
        pBar.set_description("构建IMG2NPK词典中>>>")
        if npkFile.split(".")[-1].lower() != "npk":
            continue
        # ---------------npkName----------------
        npkName = npkFile.split('\\')[-1]
        # --------------------------------
        npk = NPK()
        if npk.open(npkFile):
            dictAna_ = npk.dictAna
        else:
            errorImg.append(npkName)
            continue
        if repeatFlag:
            trueRepeatImg(dictAna_)
        else:
            falseRepeatImg(dictAna_)
    if len(errorImg) > 0:
        print("-----错误的NPK文件列表-------------------")
        for error in errorImg:
            print(error)
        print("-----错误的NPK文件列表-------------------\n")

    if repeatFlag:
        return repeatImgNpk

    else:
        return img2NpkDict
示例#4
0
def delRepeatImg(repeatImgNpkDict, img2Dir):
    if len(repeatImgNpkDict.keys()) <= 0:
        return False

    for npkPath, imgIndexes in repeatImgNpkDict.items():
        truePath = img2Dir + '\\\\' + npkPath
        obj = NPK()
        try:
            obj.open(truePath)
            obj.delImg(imgIndexes)
        except:
            print(truePath + "{}\t处理失败".format(imgIndexes))
            continue
        imgCount = toInt(obj.allContent[16:20])
        obj.save(mode=False)
        if imgCount == 0:
            remove(truePath)
            print("已删除空NPK文件:\t" + npkPath.split("\\")[-1])
示例#5
0
def imgMerge(imgList, imgDict, npkSavePath, img2Path):
    npk = NPK()
    npk.new()
    notExistNpk = []
    keys = imgDict.keys()
    notInDictImg = []
    waitOpenNpk = {}
    # 创建进度条······

    for img in imgList:
        if img not in keys:
            notInDictImg.append(img)
            continue

        npkName, imgIndex = imgDict[img]
        try:
            waitOpenNpk[npkName].append(imgIndex)
            waitOpenNpk[npkName] = list(set(waitOpenNpk[npkName]))
        except:
            waitOpenNpk[npkName] = [imgIndex]
    pBar = tqdm(waitOpenNpk.items())

    for key, value in pBar:
        pBar.set_description("拼合NPK中>>>\r")
        extractedNpk = NPK()
        npkPath = img2Path + "\\" + key
        if ife(npkPath):
            extractedNpk.open(npkPath)
        else:
            notExistNpk.append(npkPath)
            continue

        extractImg_, errorIndex = extractedNpk.extractImg(value)
        npk.addDictImg(extractImg_)

        for key in errorIndex:
            notExistNpk.append(key + "\t第{index}号IMG不存在".format(index=key))

    npk.save(npkSavePath, mode=False)
    return notInDictImg, notExistNpk