【分享】图片工具将png转pkm或astc 且可还原

脚本是使用python3写的执行脚本传入图片路径就可以了 以下是脚本。需要配合转化工具astcenc.exe和etcpack.exe使用

#!/usr/bin/env python3

#-- coding:utf-8 --

import os

import subprocess

ROOTPATH = os.getcwd()

BINPATH = os.path.join(“G:\Menu\etc-astc”, “bin”)

ETCPACKPATH = os.path.join(BINPATH, “etcpack.exe”) #etc1pack.exe路径

ASTCPATH = os.path.join(BINPATH, “astcenc.exe”) #astc.exe路径 将png转astc

PVRTEXTTOOLPATH = os.path.join(BINPATH, “PVRTexToolCLI.exe”) #astc.exe路径 将astc转png

图片转换png转astc,astc转png

def PngToAstc(ImgPath):

file_name, file_extension = os.path.splitext(ImgPath)

file_extension = file_extension.lower()

current_dir = os.path.dirname(ImgPath)  # 获取当前路径

if file_extension == '.png':

    try:

        # 执行 ASTC 命令,将 PNG 转换为 PKM

        CMD = f"{ASTCPATH} -cl {ImgPath}  {file_name}.astc 6x6 -medium"

        print(f"将 PNG 文件 {ImgPath}.png 转换为 ASTC 文件 {file_name}.astc  执行命令{CMD}")

        subprocess.run(CMD, check=True, shell=True)

    except subprocess.CalledProcessError as e:

        print(f"转换 PNG 到 ASTC 失败: {e}")

elif file_extension == '.astc':

    try:

        # 执行 ASTC 命令,将 ASTC 转换为 PNG

        CMD = f"{PVRTEXTTOOLPATH} -f r8g8b8a8 -i {ImgPath} -d {file_name}.png -noout"

        print(f"将 ASTC 文件 {ImgPath}.astc 转换为 ASTC 文件 {file_name}.png 执行命令{CMD}")

        subprocess.run(CMD, check=True, shell=True)

    except subprocess.CalledProcessError as e:

        print(f"转换 ASTC 到 PNG 失败: {e}")

else:

    print(f"文件 {ImgPath} 不是 PNG 或 ASTC 文件")

图片转换png转pkm,pkm转png

def PngToPkm(ImgPath):

file_name, file_extension = os.path.splitext(ImgPath)

file_extension = file_extension.lower()

current_dir = os.path.dirname(ImgPath)  # 获取当前路径

if file_extension == '.png':

    try:

        # 执行 ETCpack 命令,将 PNG 转换为 PKM

        CMD = f"{ETCPACKPATH} {ImgPath}  {current_dir}  -c etc2 -s fast -f RGBA8 -ext PNG"

        print(f"将 PNG 文件 {ImgPath} 转换为 PKM 文件 {file_name}.pkm")

        print(f"执行命令{CMD}")

        subprocess.run(CMD, check=True, shell=True)

    except subprocess.CalledProcessError as e:

        print(f"转换 PNG 到 PKM 失败: {e}")

elif file_extension == '.pkm':

    try:

        # 执行 ETCpack 命令,将 PKM 转换为 PNG

        CMD = f"{ETCPACKPATH} {ImgPath}  {current_dir} -ext PNG"

        print(f"将 PKM 文件 {ImgPath} 转换为 PNG 文件 {current_dir} 执行命令{CMD}")

        subprocess.run(CMD, check=True, shell=True)

    except subprocess.CalledProcessError as e:

        print(f"转换 PKM 到 PNG 失败: {e}")

else:

    print(f"文件 {ImgPath} 不是 PNG 或 PKM 文件")

def Main():

os.environ["PATH"]= BINPATH +";"+os.environ["PATH"]

ArgOfFilePath=__import__("sys").argv[1]

print(f"文件路径 = {ArgOfFilePath}")



if os.path.isfile(ArgOfFilePath):

    PngToPkm(ArgOfFilePath)

    PngToAstc(ArgOfFilePath)

else:

    for root, dirs, files in os.walk(ArgOfFilePath):

        for file in files:

            file_path = os.path.join(root, file)

            PngToPkm(file_path)

            PngToAstc(file_path)

if name == “main”:

Main()

完整的代码和工具包到这里下载:
链接:https://pan.baidu.com/s/1A3QHRIG_Rp9ePCcrOFTRwg
提取码:my7q

2赞

顶一下呢.

官方自带的转换工具在mac上很慢,有没有性能更好的转换工具