脚本是使用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