Compare commits

...

8 Commits

Author SHA1 Message Date
Killergnom
a60ae1c1ea Optimized Texture Scripts futher 2025-04-06 21:56:14 +02:00
Killergnom
d03908baab Various changes to optimizeTextures
Fixed Multithreading, fixed a bug with alpha channels and changed the output format to tga.
2025-04-06 21:26:34 +02:00
Killergnom
9420ce921c fixed crash in mergetextures 2025-01-25 23:16:01 +01:00
2c9d8068ca Purge files in destination which don't exist in the source 2025-01-04 17:32:10 -05:00
b32b994aa3 Remove resource database from copy 2025-01-03 19:41:09 -05:00
3bf486d477 Skip files which haven't changed 2025-01-03 18:56:41 -05:00
0fbbb03ec7 Garbage Cleaner 2025-01-03 15:06:53 -05:00
Killergnom
06b5edf33f Added Multiprocessing to OptimizeTextures 2024-11-18 23:18:52 +01:00
21 changed files with 1273 additions and 886 deletions

1
Garbage Cleaner/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
config.ini

View File

@@ -0,0 +1,133 @@
import sys, os, shutil, filecmp, configparser
config = configparser.ConfigParser()
if os.path.isfile("config.ini"):
config.read("config.ini")
else:
config["Settings"] = {
"sourceDir": "C:\\somepath",
"copyToDir": "C:\\someotherpath",
"foldersToCopy": "life1960,life1960_map,life1960_code"
}
with open("config.ini", "w") as configfile:
config.write(configfile)
print("Config created, please update it before running again.")
sys.exit(0)
sourceDir = config["Settings"]["sourceDir"]
copyToDir = config["Settings"]["copyToDir"]
if not os.path.exists(sourceDir):
print("Invalid source directory")
sys.exit(0)
if not os.path.exists(copyToDir):
print("Invalid destination directory")
sys.exit(0)
print("Copying files from: " + sourceDir)
foldersToCopy = tuple(config["Settings"]["foldersToCopy"].split(","))
print(foldersToCopy)
print("Copying files to: " + copyToDir)
fileExtensionsToCopy = (
".acp",
".adeb",
".ae",
".afm",
".agf",
".agr",
".anm",
".asc",
".asi",
".ast",
".asy",
".aw",
".bt",
".bterr",
".bttile",
".c",
".conf",
".ct",
# ".dds",
".desc",
".edds",
".emat",
".ent",
".et",
# ".fbx",
".fnt",
".gamemat",
".gproj",
".imageset",
".layer",
".layout",
".meta",
".nmn",
".pak",
".pap",
".physmat",
".pre",
".ptc",
".ragdoll",
".rdb",
".sig",
".siga",
".smap",
".st",
".stars",
".styles",
".terr",
".topo",
".ttf",
".ttile",
".txa",
".txo",
".vhcsurf",
".wav",
".xob"
)
# Copy files to destination but compare to make sure not wasting time copying
totalFiles = 0
totalFilesCopied = 0
totalFilesAlreadyValid = 0
for folder in foldersToCopy:
for root, dirs, files in os.walk(sourceDir + "\\" + folder):
for file in files:
totalFiles = totalFiles + 1
if file.endswith(fileExtensionsToCopy):
pathname = root + "\\" + file
relname = pathname.replace(sourceDir, "")
destpath = copyToDir + relname
if os.path.isfile(pathname):
if os.path.isfile(destpath) and filecmp.cmp(pathname, destpath, shallow=True):
#print("Skipping " + pathname)
totalFilesAlreadyValid = totalFilesAlreadyValid + 1
continue
os.makedirs(os.path.dirname(destpath), exist_ok=True)
shutil.copy2(pathname, destpath)
totalFilesCopied = totalFilesCopied + 1
print("Copying " + relname)
# purge files in destination which do not exist in source
totalFilesPurged = 0
for folder in foldersToCopy:
for root, dirs, files in os.walk(copyToDir + "\\" + folder):
for file in files:
pathname = root + "\\" + file
relname = pathname.replace(copyToDir, "")
sourcepath = sourceDir + relname
if not os.path.isfile(sourcepath):
totalFilesPurged = totalFilesPurged + 1
os.remove(pathname)
print("Deleting " + relname + " from destination because it doesn't exist in the source!")
print(str(totalFiles) + " total files. " + str(totalFilesCopied) + " copied. " + str(totalFilesAlreadyValid) + " were not copied because they are identical. " + str(totalFilesPurged) + " files were purged from destination.")

View File

@@ -17,21 +17,21 @@
[('pyi_rth_inspect',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_inspect.py',
'PYSOURCE'),
('pyi_rth_pkgres',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgres.py',
('pyi_rth_pkgutil',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgutil.py',
'PYSOURCE'),
('pyi_rth_multiprocessing',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_multiprocessing.py',
'PYSOURCE'),
('pyi_rth_pkgres',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgres.py',
'PYSOURCE'),
('pyi_rth_pywintypes',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\rthooks\\pyi_rth_pywintypes.py',
'PYSOURCE'),
('pyi_rth_pythoncom',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\rthooks\\pyi_rth_pythoncom.py',
'PYSOURCE'),
('pyi_rth_pkgutil',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgutil.py',
'PYSOURCE'),
('pyi_rth_setuptools',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_setuptools.py',
'PYSOURCE'),
@@ -59,10 +59,6 @@
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\importlib\\metadata\\__init__.py',
'PYMODULE'),
('typing',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\typing.py',
'PYMODULE'),
('importlib.metadata._itertools',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\importlib\\metadata\\_itertools.py',
@@ -969,174 +965,6 @@
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\distutils\\_msvccompiler.py',
'PYMODULE'),
('concurrent.futures',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\concurrent\\futures\\__init__.py',
'PYMODULE'),
('concurrent.futures.thread',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\concurrent\\futures\\thread.py',
'PYMODULE'),
('concurrent.futures.process',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\concurrent\\futures\\process.py',
'PYMODULE'),
('multiprocessing.synchronize',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\synchronize.py',
'PYMODULE'),
('multiprocessing.heap',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\heap.py',
'PYMODULE'),
('multiprocessing.resource_tracker',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\resource_tracker.py',
'PYMODULE'),
('multiprocessing.spawn',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\spawn.py',
'PYMODULE'),
('runpy',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\runpy.py',
'PYMODULE'),
('multiprocessing.util',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\util.py',
'PYMODULE'),
('multiprocessing.forkserver',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\forkserver.py',
'PYMODULE'),
('multiprocessing.process',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\process.py',
'PYMODULE'),
('multiprocessing.context',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\context.py',
'PYMODULE'),
('multiprocessing.popen_spawn_win32',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\popen_spawn_win32.py',
'PYMODULE'),
('multiprocessing.popen_forkserver',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\popen_forkserver.py',
'PYMODULE'),
('multiprocessing.popen_spawn_posix',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\popen_spawn_posix.py',
'PYMODULE'),
('multiprocessing.popen_fork',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\popen_fork.py',
'PYMODULE'),
('multiprocessing.sharedctypes',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\sharedctypes.py',
'PYMODULE'),
('multiprocessing.pool',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\pool.py',
'PYMODULE'),
('multiprocessing.dummy',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\dummy\\__init__.py',
'PYMODULE'),
('multiprocessing.dummy.connection',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\dummy\\connection.py',
'PYMODULE'),
('multiprocessing.managers',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\managers.py',
'PYMODULE'),
('multiprocessing.shared_memory',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\shared_memory.py',
'PYMODULE'),
('secrets',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\secrets.py',
'PYMODULE'),
('multiprocessing.reduction',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\reduction.py',
'PYMODULE'),
('multiprocessing.resource_sharer',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\resource_sharer.py',
'PYMODULE'),
('multiprocessing.queues',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\queues.py',
'PYMODULE'),
('multiprocessing.connection',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\connection.py',
'PYMODULE'),
('xmlrpc.client',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xmlrpc\\client.py',
'PYMODULE'),
('xmlrpc',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xmlrpc\\__init__.py',
'PYMODULE'),
('xmlrpc.server',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xmlrpc\\server.py',
'PYMODULE'),
('xml.parsers.expat',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xml\\parsers\\expat.py',
'PYMODULE'),
('xml.parsers',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xml\\parsers\\__init__.py',
'PYMODULE'),
('xml',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xml\\__init__.py',
'PYMODULE'),
('xml.sax.expatreader',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xml\\sax\\expatreader.py',
'PYMODULE'),
('xml.sax.saxutils',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xml\\sax\\saxutils.py',
'PYMODULE'),
('xml.sax',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xml\\sax\\__init__.py',
'PYMODULE'),
('xml.sax.handler',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xml\\sax\\handler.py',
'PYMODULE'),
('xml.sax._exceptions',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xml\\sax\\_exceptions.py',
'PYMODULE'),
('xml.sax.xmlreader',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xml\\sax\\xmlreader.py',
'PYMODULE'),
('multiprocessing',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\__init__.py',
'PYMODULE'),
('concurrent.futures._base',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\concurrent\\futures\\_base.py',
'PYMODULE'),
('concurrent',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\concurrent\\__init__.py',
'PYMODULE'),
('setuptools._distutils.command.build_clib',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools\\_distutils\\command\\build_clib.py',
@@ -1560,6 +1388,10 @@
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\pdb.py',
'PYMODULE'),
('runpy',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\runpy.py',
'PYMODULE'),
('code',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\code.py',
@@ -2159,6 +1991,42 @@
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\plistlib.py',
'PYMODULE'),
('xml.parsers.expat',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xml\\parsers\\expat.py',
'PYMODULE'),
('xml.parsers',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xml\\parsers\\__init__.py',
'PYMODULE'),
('xml',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xml\\__init__.py',
'PYMODULE'),
('xml.sax.expatreader',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xml\\sax\\expatreader.py',
'PYMODULE'),
('xml.sax.saxutils',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xml\\sax\\saxutils.py',
'PYMODULE'),
('xml.sax',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xml\\sax\\__init__.py',
'PYMODULE'),
('xml.sax.handler',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xml\\sax\\handler.py',
'PYMODULE'),
('xml.sax._exceptions',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xml\\sax\\_exceptions.py',
'PYMODULE'),
('xml.sax.xmlreader',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xml\\sax\\xmlreader.py',
'PYMODULE'),
('setuptools.config.pyprojecttoml',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools\\config\\pyprojecttoml.py',
@@ -2259,13 +2127,117 @@
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\_distutils_hack\\override.py',
'PYMODULE'),
('multiprocessing.popen_forkserver',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\popen_forkserver.py',
'PYMODULE'),
('multiprocessing.connection',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\connection.py',
'PYMODULE'),
('multiprocessing.resource_sharer',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\resource_sharer.py',
'PYMODULE'),
('multiprocessing.process',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\process.py',
'PYMODULE'),
('xmlrpc.client',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xmlrpc\\client.py',
'PYMODULE'),
('xmlrpc',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xmlrpc\\__init__.py',
'PYMODULE'),
('xmlrpc.server',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\xmlrpc\\server.py',
'PYMODULE'),
('multiprocessing.util',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\util.py',
'PYMODULE'),
('multiprocessing.resource_tracker',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\resource_tracker.py',
'PYMODULE'),
('multiprocessing.popen_fork',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\popen_fork.py',
'PYMODULE'),
('multiprocessing.forkserver',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\forkserver.py',
'PYMODULE'),
('multiprocessing.context',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\context.py',
'PYMODULE'),
('multiprocessing.sharedctypes',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\sharedctypes.py',
'PYMODULE'),
('multiprocessing.heap',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\heap.py',
'PYMODULE'),
('multiprocessing.pool',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\pool.py',
'PYMODULE'),
('multiprocessing.dummy',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\dummy\\__init__.py',
'PYMODULE'),
('multiprocessing.dummy.connection',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\dummy\\connection.py',
'PYMODULE'),
('multiprocessing.queues',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\queues.py',
'PYMODULE'),
('multiprocessing.synchronize',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\synchronize.py',
'PYMODULE'),
('multiprocessing.managers',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\managers.py',
'PYMODULE'),
('multiprocessing.shared_memory',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\shared_memory.py',
'PYMODULE'),
('secrets',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\secrets.py',
'PYMODULE'),
('multiprocessing.reduction',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\reduction.py',
'PYMODULE'),
('multiprocessing.popen_spawn_posix',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\popen_spawn_posix.py',
'PYMODULE'),
('multiprocessing.popen_spawn_win32',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\popen_spawn_win32.py',
'PYMODULE'),
('multiprocessing.spawn',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\spawn.py',
'PYMODULE'),
('multiprocessing',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\multiprocessing\\__init__.py',
'PYMODULE'),
('_pyi_rth_utils',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\fake-modules\\_pyi_rth_utils\\__init__.py',
'PYMODULE'),
('_py_abc',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\_py_abc.py',
'PYMODULE'),
('stringprep',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\stringprep.py',
@@ -2274,6 +2246,34 @@
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\tracemalloc.py',
'PYMODULE'),
('_py_abc',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\_py_abc.py',
'PYMODULE'),
('typing',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\typing.py',
'PYMODULE'),
('concurrent.futures',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\concurrent\\futures\\__init__.py',
'PYMODULE'),
('concurrent.futures.thread',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\concurrent\\futures\\thread.py',
'PYMODULE'),
('concurrent.futures.process',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\concurrent\\futures\\process.py',
'PYMODULE'),
('concurrent.futures._base',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\concurrent\\futures\\_base.py',
'PYMODULE'),
('concurrent',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\concurrent\\__init__.py',
'PYMODULE'),
('PIL.Image',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PIL\\Image.py',
'PYMODULE'),
@@ -3098,14 +3098,6 @@
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\_queue.pyd',
'EXTENSION'),
('_multiprocessing.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\_multiprocessing.pyd',
'EXTENSION'),
('pyexpat.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\pyexpat.pyd',
'EXTENSION'),
('_overlapped.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\_overlapped.pyd',
@@ -3129,6 +3121,14 @@
('win32\\_win32sysloader.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\win32\\_win32sysloader.pyd',
'EXTENSION'),
('pyexpat.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\pyexpat.pyd',
'EXTENSION'),
('_multiprocessing.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\_multiprocessing.pyd',
'EXTENSION'),
('PIL\\_webp.cp310-win_amd64.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PIL\\_webp.cp310-win_amd64.pyd',
'EXTENSION'),
@@ -3232,18 +3232,6 @@
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\MergeTextures2\\build\\merge_textures\\base_library.zip',
'DATA'),
('setuptools-65.5.0.dist-info\\METADATA',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\METADATA',
'DATA'),
('setuptools-65.5.0.dist-info\\top_level.txt',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\top_level.txt',
'DATA'),
('setuptools-65.5.0.dist-info\\RECORD',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\RECORD',
'DATA'),
('setuptools-65.5.0.dist-info\\LICENSE',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\LICENSE',
@@ -3252,15 +3240,27 @@
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\WHEEL',
'DATA'),
('setuptools-65.5.0.dist-info\\INSTALLER',
('setuptools-65.5.0.dist-info\\top_level.txt',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\INSTALLER',
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\top_level.txt',
'DATA'),
('setuptools-65.5.0.dist-info\\METADATA',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\METADATA',
'DATA'),
('setuptools-65.5.0.dist-info\\REQUESTED',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\REQUESTED',
'DATA'),
('setuptools-65.5.0.dist-info\\entry_points.txt',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\entry_points.txt',
'DATA'),
('setuptools-65.5.0.dist-info\\REQUESTED',
('setuptools-65.5.0.dist-info\\INSTALLER',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\REQUESTED',
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\INSTALLER',
'DATA'),
('setuptools-65.5.0.dist-info\\RECORD',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\RECORD',
'DATA')])

View File

@@ -64,21 +64,21 @@
('pyi_rth_inspect',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_inspect.py',
'PYSOURCE'),
('pyi_rth_pkgres',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgres.py',
('pyi_rth_pkgutil',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgutil.py',
'PYSOURCE'),
('pyi_rth_multiprocessing',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_multiprocessing.py',
'PYSOURCE'),
('pyi_rth_pkgres',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgres.py',
'PYSOURCE'),
('pyi_rth_pywintypes',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\rthooks\\pyi_rth_pywintypes.py',
'PYSOURCE'),
('pyi_rth_pythoncom',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\rthooks\\pyi_rth_pythoncom.py',
'PYSOURCE'),
('pyi_rth_pkgutil',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgutil.py',
'PYSOURCE'),
('pyi_rth_setuptools',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_setuptools.py',
'PYSOURCE'),
@@ -145,14 +145,6 @@
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\_queue.pyd',
'EXTENSION'),
('_multiprocessing.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\_multiprocessing.pyd',
'EXTENSION'),
('pyexpat.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\pyexpat.pyd',
'EXTENSION'),
('_overlapped.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\_overlapped.pyd',
@@ -176,6 +168,14 @@
('win32\\_win32sysloader.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\win32\\_win32sysloader.pyd',
'EXTENSION'),
('pyexpat.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\pyexpat.pyd',
'EXTENSION'),
('_multiprocessing.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\_multiprocessing.pyd',
'EXTENSION'),
('PIL\\_webp.cp310-win_amd64.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PIL\\_webp.cp310-win_amd64.pyd',
'EXTENSION'),
@@ -277,18 +277,6 @@
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\MergeTextures2\\build\\merge_textures\\base_library.zip',
'DATA'),
('setuptools-65.5.0.dist-info\\METADATA',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\METADATA',
'DATA'),
('setuptools-65.5.0.dist-info\\top_level.txt',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\top_level.txt',
'DATA'),
('setuptools-65.5.0.dist-info\\RECORD',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\RECORD',
'DATA'),
('setuptools-65.5.0.dist-info\\LICENSE',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\LICENSE',
@@ -297,22 +285,34 @@
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\WHEEL',
'DATA'),
('setuptools-65.5.0.dist-info\\INSTALLER',
('setuptools-65.5.0.dist-info\\top_level.txt',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\INSTALLER',
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\top_level.txt',
'DATA'),
('setuptools-65.5.0.dist-info\\METADATA',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\METADATA',
'DATA'),
('setuptools-65.5.0.dist-info\\REQUESTED',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\REQUESTED',
'DATA'),
('setuptools-65.5.0.dist-info\\entry_points.txt',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\entry_points.txt',
'DATA'),
('setuptools-65.5.0.dist-info\\REQUESTED',
('setuptools-65.5.0.dist-info\\INSTALLER',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\REQUESTED',
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\INSTALLER',
'DATA'),
('setuptools-65.5.0.dist-info\\RECORD',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\RECORD',
'DATA')],
[],
False,
False,
1729345827,
1743968683,
[('run.exe',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\bootloader\\Windows-64bit-intel\\run.exe',
'EXECUTABLE')],

View File

@@ -40,21 +40,21 @@
('pyi_rth_inspect',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_inspect.py',
'PYSOURCE'),
('pyi_rth_pkgres',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgres.py',
('pyi_rth_pkgutil',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgutil.py',
'PYSOURCE'),
('pyi_rth_multiprocessing',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_multiprocessing.py',
'PYSOURCE'),
('pyi_rth_pkgres',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgres.py',
'PYSOURCE'),
('pyi_rth_pywintypes',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\rthooks\\pyi_rth_pywintypes.py',
'PYSOURCE'),
('pyi_rth_pythoncom',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\rthooks\\pyi_rth_pythoncom.py',
'PYSOURCE'),
('pyi_rth_pkgutil',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgutil.py',
'PYSOURCE'),
('pyi_rth_setuptools',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_setuptools.py',
'PYSOURCE'),
@@ -121,14 +121,6 @@
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\_queue.pyd',
'EXTENSION'),
('_multiprocessing.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\_multiprocessing.pyd',
'EXTENSION'),
('pyexpat.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\pyexpat.pyd',
'EXTENSION'),
('_overlapped.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\_overlapped.pyd',
@@ -152,6 +144,14 @@
('win32\\_win32sysloader.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\win32\\_win32sysloader.pyd',
'EXTENSION'),
('pyexpat.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\pyexpat.pyd',
'EXTENSION'),
('_multiprocessing.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\_multiprocessing.pyd',
'EXTENSION'),
('PIL\\_webp.cp310-win_amd64.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PIL\\_webp.cp310-win_amd64.pyd',
'EXTENSION'),
@@ -253,18 +253,6 @@
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\MergeTextures2\\build\\merge_textures\\base_library.zip',
'DATA'),
('setuptools-65.5.0.dist-info\\METADATA',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\METADATA',
'DATA'),
('setuptools-65.5.0.dist-info\\top_level.txt',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\top_level.txt',
'DATA'),
('setuptools-65.5.0.dist-info\\RECORD',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\RECORD',
'DATA'),
('setuptools-65.5.0.dist-info\\LICENSE',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\LICENSE',
@@ -273,17 +261,29 @@
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\WHEEL',
'DATA'),
('setuptools-65.5.0.dist-info\\INSTALLER',
('setuptools-65.5.0.dist-info\\top_level.txt',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\INSTALLER',
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\top_level.txt',
'DATA'),
('setuptools-65.5.0.dist-info\\METADATA',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\METADATA',
'DATA'),
('setuptools-65.5.0.dist-info\\REQUESTED',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\REQUESTED',
'DATA'),
('setuptools-65.5.0.dist-info\\entry_points.txt',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\entry_points.txt',
'DATA'),
('setuptools-65.5.0.dist-info\\REQUESTED',
('setuptools-65.5.0.dist-info\\INSTALLER',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\REQUESTED',
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\INSTALLER',
'DATA'),
('setuptools-65.5.0.dist-info\\RECORD',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\RECORD',
'DATA')],
'python310.dll',
False,

View File

@@ -38,14 +38,6 @@ missing module named System - imported by pyreadline3.clipboard.ironpython_clipb
missing module named console - imported by pyreadline3.console.ansi (conditional)
missing module named clr - imported by pyreadline3.clipboard.ironpython_clipboard (top-level), pyreadline3.console.ironpython_console (top-level)
missing module named IronPythonConsole - imported by pyreadline3.console.ironpython_console (top-level)
missing module named _posixshmem - imported by multiprocessing.resource_tracker (conditional), multiprocessing.shared_memory (conditional)
missing module named multiprocessing.set_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named multiprocessing.get_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named multiprocessing.get_context - imported by multiprocessing (top-level), multiprocessing.pool (top-level), multiprocessing.managers (top-level), multiprocessing.sharedctypes (top-level)
missing module named multiprocessing.TimeoutError - imported by multiprocessing (top-level), multiprocessing.pool (top-level)
missing module named java - imported by xml.sax._exceptions (conditional)
missing module named multiprocessing.BufferTooShort - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named multiprocessing.AuthenticationError - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named asyncio.DefaultEventLoopPolicy - imported by asyncio (delayed, conditional), asyncio.events (delayed, conditional)
missing module named pyparsing.Word - imported by pyparsing (delayed), pyparsing.unicode (delayed)
missing module named railroad - imported by pkg_resources._vendor.pyparsing.diagram (top-level), pyparsing.diagram (top-level), setuptools._vendor.pyparsing.diagram (top-level)
@@ -71,11 +63,19 @@ missing module named 'win32com.gen_py' - imported by win32com (conditional, opti
missing module named pkg_resources.extern.packaging - imported by pkg_resources.extern (top-level), pkg_resources (top-level)
missing module named pkg_resources.extern.appdirs - imported by pkg_resources.extern (top-level), pkg_resources (top-level)
missing module named 'pkg_resources.extern.jaraco' - imported by pkg_resources (top-level), pkg_resources._vendor.jaraco.text (top-level)
missing module named java - imported by xml.sax._exceptions (conditional)
missing module named trove_classifiers - imported by setuptools.config._validate_pyproject.formats (optional)
missing module named 'setuptools.extern.packaging.specifiers' - imported by setuptools.config.setupcfg (top-level), setuptools.config._apply_pyprojecttoml (delayed)
missing module named 'setuptools.extern.packaging.requirements' - imported by setuptools.config.setupcfg (top-level)
missing module named importlib_metadata - imported by setuptools._importlib (delayed, optional)
missing module named pyimod02_importers - imported by C:\Users\Niklas\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgres.py (delayed), C:\Users\Niklas\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgutil.py (delayed)
missing module named pyimod02_importers - imported by C:\Users\Niklas\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgutil.py (delayed), C:\Users\Niklas\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgres.py (delayed)
missing module named multiprocessing.BufferTooShort - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named multiprocessing.AuthenticationError - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named _posixshmem - imported by multiprocessing.resource_tracker (conditional), multiprocessing.shared_memory (conditional)
missing module named multiprocessing.get_context - imported by multiprocessing (top-level), multiprocessing.pool (top-level), multiprocessing.managers (top-level), multiprocessing.sharedctypes (top-level)
missing module named multiprocessing.TimeoutError - imported by multiprocessing (top-level), multiprocessing.pool (top-level)
missing module named multiprocessing.set_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named multiprocessing.get_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named olefile - imported by PIL.FpxImagePlugin (top-level), PIL.MicImagePlugin (top-level)
missing module named dummy_threading - imported by psutil._compat (optional)
missing module named _dummy_thread - imported by cffi.lock (conditional, optional), numpy.core.arrayprint (optional)

View File

@@ -26,6 +26,7 @@ imports:
&#8226; <a href="#codecs">codecs</a>
&#8226; <a href="#collections">collections</a>
&#8226; <a href="#collections.abc">collections.abc</a>
&#8226; <a href="#concurrent.futures">concurrent.futures</a>
&#8226; <a href="#copyreg">copyreg</a>
&#8226; <a href="#encodings">encodings</a>
&#8226; <a href="#encodings.aliases">encodings.aliases</a>
@@ -178,6 +179,7 @@ imports:
&#8226; <a href="#time">time</a>
&#8226; <a href="#traceback">traceback</a>
&#8226; <a href="#types">types</a>
&#8226; <a href="#typing">typing</a>
&#8226; <a href="#warnings">warnings</a>
&#8226; <a href="#weakref">weakref</a>
@@ -5906,6 +5908,7 @@ imported by:
&#8226; <a href="#concurrent.futures.process">concurrent.futures.process</a>
&#8226; <a href="#concurrent.futures.thread">concurrent.futures.thread</a>
&#8226; <a href="#distutils.command.build_ext">distutils.command.build_ext</a>
&#8226; <a href="#merge_textures.py">merge_textures.py</a>
&#8226; <a href="#setuptools._distutils.command.build_ext">setuptools._distutils.command.build_ext</a>
</div>
@@ -29589,6 +29592,7 @@ imported by:
&#8226; <a href="#jinja2.visitor">jinja2.visitor</a>
&#8226; <a href="#markupsafe">markupsafe</a>
&#8226; <a href="#markupsafe._native">markupsafe._native</a>
&#8226; <a href="#merge_textures.py">merge_textures.py</a>
&#8226; <a href="#numpy._typing">numpy._typing</a>
&#8226; <a href="#numpy._typing._array_like">numpy._typing._array_like</a>
&#8226; <a href="#numpy._typing._char_codes">numpy._typing._char_codes</a>

Binary file not shown.

View File

@@ -2,6 +2,8 @@ import os
import sys
from PIL import Image # type: ignore
import time
import concurrent.futures
from typing import Dict, List, Optional, Tuple
# Define suffix lists for BaseColor, Normal, RMA/ORM
BASECOLOR_SUFFIXES = ['_alb.', '_albedo.', '_bc.', '_basecolor.', '_b.']
@@ -44,6 +46,25 @@ def get_material_name(filename):
# Return the base_name without the suffix for output naming
return base_name.rsplit('_', 1)[0] # Split only at the last underscore
def convert_single_material(material_data: Tuple[str, Dict[str, str]], output_folder: str) -> Tuple[bool, str]:
"""Convert a single material to BCR/NMO format"""
material, files = material_data
basecolor_file = files.get('BaseColor')
normal_file = files.get('Normal')
rma_file = files.get('RMA')
orm_file = files.get('ORM')
emissive_file = files.get('Emissive')
opacity_file = files.get('Opacity')
mask_file = files.get('Mask')
try:
if convert_to_bcr_nmo(material, basecolor_file, normal_file, rma_file, orm_file, emissive_file, opacity_file, mask_file, output_folder):
return True, f"{material}: Successfully converted."
else:
return False, f"Skipping {material}: input file sizes do not match."
except Exception as e:
return False, f"Error processing {material}: {str(e)}"
def process_textures(input_files):
""" Main function to process all textures in a folder and convert to BCR/NMO """
textures = {}
@@ -66,37 +87,49 @@ def process_textures(input_files):
material_count = len(textures)
print(f"Detected {material_count} Materials to process.")
# Process each material group
for index, (material, files) in enumerate(textures.items()):
basecolor_file = files.get('BaseColor')
normal_file = files.get('Normal')
rma_file = files.get('RMA')
orm_file = files.get('ORM')
emissive_file = files.get('Emissive')
opacity_file = files.get('Opacity')
mask_file = files.get('Mask')
missing_files = []
# Check for required textures and filter out incomplete materials
valid_materials = {}
failed_converts = 0
# Check for required textures
if not basecolor_file:
for material, files in textures.items():
missing_files = []
if not files.get('BaseColor'):
missing_files.append('BaseColor')
if not normal_file:
if not files.get('Normal'):
missing_files.append('Normal')
if not (rma_file or orm_file):
if not (files.get('RMA') or files.get('ORM')):
missing_files.append('RMA or ORM')
# Report missing files if any
if missing_files:
print(f"({index+1}/{material_count}) Skipping {material}: missing {', '.join(missing_files)}")
print(f"Skipping {material}: missing {', '.join(missing_files)}")
failed_converts += 1
else:
# Convert to BCR/NMO format
convert_to_bcr_nmo(material, basecolor_file, normal_file, rma_file, orm_file, emissive_file, opacity_file, mask_file, output_folder)
print(f"({index+1}/{material_count}) {material}: Successfully converted.")
valid_materials[material] = files
print(f"+++{material_count - failed_converts} of {material_count} materials successfully converted+++")
# Process materials in parallel
success_count = 0
with concurrent.futures.ThreadPoolExecutor() as executor:
# Submit all materials for processing
future_to_material = {
executor.submit(convert_single_material, (material, files), output_folder): material
for material, files in valid_materials.items()
}
# Process results as they complete
for future in concurrent.futures.as_completed(future_to_material):
material = future_to_material[future]
try:
success, message = future.result()
if success:
success_count += 1
else:
failed_converts += 1
print(message)
except Exception as e:
failed_converts += 1
print(f"Error processing {material}: {str(e)}")
print(f"+++{success_count} of {material_count} materials successfully converted+++")
time.sleep(3)
def convert_to_bcr_nmo(material, basecolor_file, normal_file, rma_file, orm_file, emissive_file, opacity_file, mask_file, output_folder):
@@ -106,32 +139,47 @@ def convert_to_bcr_nmo(material, basecolor_file, normal_file, rma_file, orm_file
if rma_file:
rma_img = Image.open(rma_file).convert('RGBA')
if not (basecolor_img.size == normal_img.size == rma_img.size):
return False
# BCR conversion
bcr_img = Image.merge('RGBA', (basecolor_img.split()[0], basecolor_img.split()[1], basecolor_img.split()[2], rma_img.split()[0])) # Use Roughness (Alpha from RMA/ORM)
bcr_img.save(os.path.join(output_folder, f"{material}_BCR.png"))
bcr_img.save(os.path.join(output_folder, f"{material}_BCR.tga"))
# NMO conversion
nmo_img = Image.merge('RGBA', (normal_img.split()[0], normal_img.split()[1], rma_img.split()[1], rma_img.split()[2])) # Use Metallic, AO from RMA/ORM
nmo_img.save(os.path.join(output_folder, f"{material}_NMO.png"))
nmo_img.save(os.path.join(output_folder, f"{material}_NMO.tga"))
elif orm_file:
rma_img = Image.open(orm_file).convert('RGBA')
if not (basecolor_img.size == normal_img.size == rma_img.size):
return False
# BCR conversion
bcr_img = Image.merge('RGBA', (basecolor_img.split()[0], basecolor_img.split()[1], basecolor_img.split()[2], rma_img.split()[1])) # Use Roughness (Alpha from RMA/ORM)
bcr_img.save(os.path.join(output_folder, f"{material}_BCR.png"))
bcr_img.save(os.path.join(output_folder, f"{material}_BCR.tga"))
# NMO conversion
nmo_img = Image.merge('RGBA', (normal_img.split()[0], normal_img.split()[1], rma_img.split()[2], rma_img.split()[0])) # Use Metallic, AO from RMA/ORM
nmo_img.save(os.path.join(output_folder, f"{material}_NMO.png"))
nmo_img.save(os.path.join(output_folder, f"{material}_NMO.tga"))
# Optionally handle emissive and opacity maps
if emissive_file:
emissive_img = Image.open(emissive_file).convert('RGB')
emissive_img.save(os.path.join(output_folder, f"{material}_EM.png"))
emissive_img = Image.open(emissive_file)
# Preserve original color mode instead of forcing RGB
if emissive_img.mode != 'RGBA':
emissive_img = emissive_img.convert('RGBA')
emissive_img.save(os.path.join(output_folder, f"{material}_EM.tga"))
if opacity_file:
opacity_img = Image.open(opacity_file).convert('L')
opacity_img.save(os.path.join(output_folder, f"{material}_OP.png"))
opacity_img = Image.open(opacity_file)
# Preserve original color mode instead of forcing grayscale
if opacity_img.mode != 'RGBA':
opacity_img = opacity_img.convert('RGBA')
opacity_img.save(os.path.join(output_folder, f"{material}_OP.tga"))
if mask_file:
mask_img = Image.open(mask_file).convert('L')
mask_img.save(os.path.join(output_folder, f"{material}_MASK.png"))
mask_img = Image.open(mask_file)
# Preserve original color mode instead of forcing grayscale
if mask_img.mode != 'RGBA':
mask_img = mask_img.convert('RGBA')
mask_img.save(os.path.join(output_folder, f"{material}_MASK.tga"))
return True
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Usage: drag and drop texture files onto the script")

View File

@@ -1 +1 @@
python3 -m PyInstaller -F --icon=./optimizeTextures.ico -c .\optimize_textures.py
python3 -m PyInstaller -F --icon=./optimizeTextures.ico -c .\optimize_textures.py --hidden-import=multiprocessing --hidden-import=multiprocessing.pool --hidden-import=multiprocessing.util --hidden-import=multiprocessing.forking --hidden-import=multiprocessing.spawn --hidden-import=multiprocessing.context --hidden-import=multiprocessing.reduction --hidden-import=multiprocessing.sharedctypes --hidden-import=multiprocessing.connection --hidden-import=multiprocessing.managers --hidden-import=multiprocessing.synchronize --hidden-import=multiprocessing.queues --hidden-import=multiprocessing.shared_memory --hidden-import=concurrent.futures --runtime-hook=freeze_support.py

View File

@@ -61,24 +61,28 @@
('pyiboot01_bootstrap',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\loader\\pyiboot01_bootstrap.py',
'PYSOURCE'),
('freeze_support',
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\freeze_support.py',
'PYSOURCE'),
('pyi_rth_inspect',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_inspect.py',
'PYSOURCE'),
('pyi_rth_pkgres',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgres.py',
('pyi_rth_pkgutil',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgutil.py',
'PYSOURCE'),
('pyi_rth_multiprocessing',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_multiprocessing.py',
'PYSOURCE'),
('pyi_rth_pkgres',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgres.py',
'PYSOURCE'),
('pyi_rth_pywintypes',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\rthooks\\pyi_rth_pywintypes.py',
'PYSOURCE'),
('pyi_rth_pythoncom',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\rthooks\\pyi_rth_pythoncom.py',
'PYSOURCE'),
('pyi_rth_pkgutil',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgutil.py',
'PYSOURCE'),
('pyi_rth_setuptools',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_setuptools.py',
'PYSOURCE'),
@@ -90,15 +94,15 @@
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\python310.dll',
'BINARY'),
('libopenblas64__v0.3.21-gcc_10_3_0.dll',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\numpy\\.libs\\libopenblas64__v0.3.21-gcc_10_3_0.dll',
'BINARY'),
('pywin32_system32\\pywintypes310.dll',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\pywin32_system32\\pywintypes310.dll',
'BINARY'),
('pywin32_system32\\pythoncom310.dll',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\pywin32_system32\\pythoncom310.dll',
'BINARY'),
('libopenblas64__v0.3.21-gcc_10_3_0.dll',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\numpy\\.libs\\libopenblas64__v0.3.21-gcc_10_3_0.dll',
'BINARY'),
('_decimal.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\_decimal.pyd',
@@ -145,14 +149,6 @@
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\_queue.pyd',
'EXTENSION'),
('_multiprocessing.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\_multiprocessing.pyd',
'EXTENSION'),
('pyexpat.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\pyexpat.pyd',
'EXTENSION'),
('_overlapped.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\_overlapped.pyd',
@@ -176,14 +172,13 @@
('win32\\_win32sysloader.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\win32\\_win32sysloader.pyd',
'EXTENSION'),
('PIL\\_webp.cp310-win_amd64.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PIL\\_webp.cp310-win_amd64.pyd',
('pyexpat.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\pyexpat.pyd',
'EXTENSION'),
('PIL\\_imagingtk.cp310-win_amd64.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PIL\\_imagingtk.cp310-win_amd64.pyd',
'EXTENSION'),
('PIL\\_imagingcms.cp310-win_amd64.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PIL\\_imagingcms.cp310-win_amd64.pyd',
('_multiprocessing.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\_multiprocessing.pyd',
'EXTENSION'),
('numpy\\core\\_multiarray_tests.cp310-win_amd64.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\numpy\\core\\_multiarray_tests.cp310-win_amd64.pyd',
@@ -233,6 +228,15 @@
('numpy\\linalg\\_umath_linalg.cp310-win_amd64.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\numpy\\linalg\\_umath_linalg.cp310-win_amd64.pyd',
'EXTENSION'),
('PIL\\_webp.cp310-win_amd64.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PIL\\_webp.cp310-win_amd64.pyd',
'EXTENSION'),
('PIL\\_imagingtk.cp310-win_amd64.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PIL\\_imagingtk.cp310-win_amd64.pyd',
'EXTENSION'),
('PIL\\_imagingcms.cp310-win_amd64.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PIL\\_imagingcms.cp310-win_amd64.pyd',
'EXTENSION'),
('_cffi_backend.cp310-win_amd64.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\_cffi_backend.cp310-win_amd64.pyd',
'EXTENSION'),
@@ -277,42 +281,42 @@
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\base_library.zip',
'DATA'),
('setuptools-65.5.0.dist-info\\top_level.txt',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\top_level.txt',
'DATA'),
('setuptools-65.5.0.dist-info\\WHEEL',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\WHEEL',
'DATA'),
('setuptools-65.5.0.dist-info\\REQUESTED',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\REQUESTED',
'DATA'),
('setuptools-65.5.0.dist-info\\RECORD',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\RECORD',
'DATA'),
('setuptools-65.5.0.dist-info\\entry_points.txt',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\entry_points.txt',
'DATA'),
('setuptools-65.5.0.dist-info\\LICENSE',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\LICENSE',
'DATA'),
('setuptools-65.5.0.dist-info\\INSTALLER',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\INSTALLER',
'DATA'),
('setuptools-65.5.0.dist-info\\REQUESTED',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\REQUESTED',
'DATA'),
('setuptools-65.5.0.dist-info\\WHEEL',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\WHEEL',
'DATA'),
('setuptools-65.5.0.dist-info\\METADATA',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\METADATA',
'DATA'),
('setuptools-65.5.0.dist-info\\top_level.txt',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\top_level.txt',
'DATA'),
('setuptools-65.5.0.dist-info\\RECORD',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\RECORD',
'DATA'),
('setuptools-65.5.0.dist-info\\LICENSE',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\LICENSE',
'DATA')],
[],
False,
False,
1729946176,
1743968769,
[('run.exe',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\bootloader\\Windows-64bit-intel\\run.exe',
'EXECUTABLE')],

View File

@@ -37,24 +37,28 @@
('pyiboot01_bootstrap',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\loader\\pyiboot01_bootstrap.py',
'PYSOURCE'),
('freeze_support',
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\freeze_support.py',
'PYSOURCE'),
('pyi_rth_inspect',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_inspect.py',
'PYSOURCE'),
('pyi_rth_pkgres',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgres.py',
('pyi_rth_pkgutil',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgutil.py',
'PYSOURCE'),
('pyi_rth_multiprocessing',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_multiprocessing.py',
'PYSOURCE'),
('pyi_rth_pkgres',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgres.py',
'PYSOURCE'),
('pyi_rth_pywintypes',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\rthooks\\pyi_rth_pywintypes.py',
'PYSOURCE'),
('pyi_rth_pythoncom',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\rthooks\\pyi_rth_pythoncom.py',
'PYSOURCE'),
('pyi_rth_pkgutil',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgutil.py',
'PYSOURCE'),
('pyi_rth_setuptools',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_setuptools.py',
'PYSOURCE'),
@@ -66,15 +70,15 @@
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\python310.dll',
'BINARY'),
('libopenblas64__v0.3.21-gcc_10_3_0.dll',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\numpy\\.libs\\libopenblas64__v0.3.21-gcc_10_3_0.dll',
'BINARY'),
('pywin32_system32\\pywintypes310.dll',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\pywin32_system32\\pywintypes310.dll',
'BINARY'),
('pywin32_system32\\pythoncom310.dll',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\pywin32_system32\\pythoncom310.dll',
'BINARY'),
('libopenblas64__v0.3.21-gcc_10_3_0.dll',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\numpy\\.libs\\libopenblas64__v0.3.21-gcc_10_3_0.dll',
'BINARY'),
('_decimal.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\_decimal.pyd',
@@ -121,14 +125,6 @@
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\_queue.pyd',
'EXTENSION'),
('_multiprocessing.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\_multiprocessing.pyd',
'EXTENSION'),
('pyexpat.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\pyexpat.pyd',
'EXTENSION'),
('_overlapped.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\_overlapped.pyd',
@@ -152,14 +148,13 @@
('win32\\_win32sysloader.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\win32\\_win32sysloader.pyd',
'EXTENSION'),
('PIL\\_webp.cp310-win_amd64.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PIL\\_webp.cp310-win_amd64.pyd',
('pyexpat.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\pyexpat.pyd',
'EXTENSION'),
('PIL\\_imagingtk.cp310-win_amd64.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PIL\\_imagingtk.cp310-win_amd64.pyd',
'EXTENSION'),
('PIL\\_imagingcms.cp310-win_amd64.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PIL\\_imagingcms.cp310-win_amd64.pyd',
('_multiprocessing.pyd',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\DLLs\\_multiprocessing.pyd',
'EXTENSION'),
('numpy\\core\\_multiarray_tests.cp310-win_amd64.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\numpy\\core\\_multiarray_tests.cp310-win_amd64.pyd',
@@ -209,6 +204,15 @@
('numpy\\linalg\\_umath_linalg.cp310-win_amd64.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\numpy\\linalg\\_umath_linalg.cp310-win_amd64.pyd',
'EXTENSION'),
('PIL\\_webp.cp310-win_amd64.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PIL\\_webp.cp310-win_amd64.pyd',
'EXTENSION'),
('PIL\\_imagingtk.cp310-win_amd64.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PIL\\_imagingtk.cp310-win_amd64.pyd',
'EXTENSION'),
('PIL\\_imagingcms.cp310-win_amd64.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PIL\\_imagingcms.cp310-win_amd64.pyd',
'EXTENSION'),
('_cffi_backend.cp310-win_amd64.pyd',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\_cffi_backend.cp310-win_amd64.pyd',
'EXTENSION'),
@@ -253,37 +257,37 @@
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\base_library.zip',
'DATA'),
('setuptools-65.5.0.dist-info\\top_level.txt',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\top_level.txt',
'DATA'),
('setuptools-65.5.0.dist-info\\WHEEL',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\WHEEL',
'DATA'),
('setuptools-65.5.0.dist-info\\REQUESTED',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\REQUESTED',
'DATA'),
('setuptools-65.5.0.dist-info\\RECORD',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\RECORD',
'DATA'),
('setuptools-65.5.0.dist-info\\entry_points.txt',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\entry_points.txt',
'DATA'),
('setuptools-65.5.0.dist-info\\LICENSE',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\LICENSE',
'DATA'),
('setuptools-65.5.0.dist-info\\INSTALLER',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\INSTALLER',
'DATA'),
('setuptools-65.5.0.dist-info\\REQUESTED',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\REQUESTED',
'DATA'),
('setuptools-65.5.0.dist-info\\WHEEL',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\WHEEL',
'DATA'),
('setuptools-65.5.0.dist-info\\METADATA',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\METADATA',
'DATA'),
('setuptools-65.5.0.dist-info\\top_level.txt',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\top_level.txt',
'DATA'),
('setuptools-65.5.0.dist-info\\RECORD',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\RECORD',
'DATA'),
('setuptools-65.5.0.dist-info\\LICENSE',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\LICENSE',
'DATA')],
'python310.dll',
False,

View File

@@ -15,10 +15,10 @@ IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
tracking down the missing module yourself. Thanks!
missing module named pep517 - imported by importlib.metadata (delayed)
missing module named org - imported by copy (optional)
missing module named 'org.python' - imported by copy (optional), xml.sax (delayed, conditional)
missing module named pwd - imported by posixpath (delayed, conditional), subprocess (delayed, conditional, optional), shutil (delayed, optional), tarfile (optional), pathlib (delayed, optional), netrc (delayed, conditional), getpass (delayed), http.server (delayed, optional), webbrowser (delayed), distutils.util (delayed, conditional, optional), distutils.archive_util (optional), psutil (optional), setuptools._distutils.archive_util (optional), setuptools._distutils.util (delayed, conditional, optional)
missing module named grp - imported by subprocess (delayed, conditional, optional), shutil (delayed, optional), tarfile (optional), pathlib (delayed, optional), distutils.archive_util (optional), setuptools._distutils.archive_util (optional)
missing module named 'org.python' - imported by pickle (optional), xml.sax (delayed, conditional)
missing module named org - imported by pickle (optional)
missing module named posix - imported by os (conditional, optional), shutil (conditional), importlib._bootstrap_external (conditional)
missing module named resource - imported by posix (top-level)
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional), zipimport (top-level)
@@ -38,14 +38,6 @@ missing module named System - imported by pyreadline3.clipboard.ironpython_clipb
missing module named console - imported by pyreadline3.console.ansi (conditional)
missing module named clr - imported by pyreadline3.clipboard.ironpython_clipboard (top-level), pyreadline3.console.ironpython_console (top-level)
missing module named IronPythonConsole - imported by pyreadline3.console.ironpython_console (top-level)
missing module named _posixshmem - imported by multiprocessing.resource_tracker (conditional), multiprocessing.shared_memory (conditional)
missing module named multiprocessing.set_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named multiprocessing.get_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named multiprocessing.get_context - imported by multiprocessing (top-level), multiprocessing.pool (top-level), multiprocessing.managers (top-level), multiprocessing.sharedctypes (top-level)
missing module named multiprocessing.TimeoutError - imported by multiprocessing (top-level), multiprocessing.pool (top-level)
missing module named java - imported by xml.sax._exceptions (conditional)
missing module named multiprocessing.BufferTooShort - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named multiprocessing.AuthenticationError - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named asyncio.DefaultEventLoopPolicy - imported by asyncio (delayed, conditional), asyncio.events (delayed, conditional)
missing module named pyparsing.Word - imported by pyparsing (delayed), pyparsing.unicode (delayed)
missing module named railroad - imported by pkg_resources._vendor.pyparsing.diagram (top-level), pyparsing.diagram (top-level), setuptools._vendor.pyparsing.diagram (top-level)
@@ -71,12 +63,22 @@ missing module named 'win32com.gen_py' - imported by win32com (conditional, opti
missing module named pkg_resources.extern.packaging - imported by pkg_resources.extern (top-level), pkg_resources (top-level)
missing module named pkg_resources.extern.appdirs - imported by pkg_resources.extern (top-level), pkg_resources (top-level)
missing module named 'pkg_resources.extern.jaraco' - imported by pkg_resources (top-level), pkg_resources._vendor.jaraco.text (top-level)
missing module named java - imported by xml.sax._exceptions (conditional)
missing module named trove_classifiers - imported by setuptools.config._validate_pyproject.formats (optional)
missing module named 'setuptools.extern.packaging.specifiers' - imported by setuptools.config.setupcfg (top-level), setuptools.config._apply_pyprojecttoml (delayed)
missing module named 'setuptools.extern.packaging.requirements' - imported by setuptools.config.setupcfg (top-level)
missing module named importlib_metadata - imported by setuptools._importlib (delayed, optional)
missing module named pyimod02_importers - imported by C:\Users\Niklas\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgres.py (delayed), C:\Users\Niklas\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgutil.py (delayed)
missing module named olefile - imported by PIL.FpxImagePlugin (top-level), PIL.MicImagePlugin (top-level)
missing module named pyimod02_importers - imported by C:\Users\Niklas\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgutil.py (delayed), C:\Users\Niklas\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgres.py (delayed)
missing module named _posixshmem - imported by multiprocessing.resource_tracker (conditional), multiprocessing.shared_memory (conditional)
missing module named multiprocessing.get_context - imported by multiprocessing (top-level), multiprocessing.pool (top-level), multiprocessing.managers (top-level), multiprocessing.sharedctypes (top-level)
missing module named multiprocessing.BufferTooShort - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named multiprocessing.AuthenticationError - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named multiprocessing.set_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named multiprocessing.get_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named multiprocessing.TimeoutError - imported by multiprocessing (top-level), multiprocessing.pool (top-level)
missing module named multiprocessing.freeze_support - imported by multiprocessing (top-level), E:\Arma Reforger Work\1960-utils\Texturing\OptimizeTextures\optimize_textures.py (top-level)
missing module named multiprocessing.cpu_count - imported by multiprocessing (top-level), E:\Arma Reforger Work\1960-utils\Texturing\OptimizeTextures\optimize_textures.py (top-level)
missing module named multiprocessing.Pool - imported by multiprocessing (top-level), E:\Arma Reforger Work\1960-utils\Texturing\OptimizeTextures\optimize_textures.py (top-level)
missing module named dummy_threading - imported by psutil._compat (optional)
missing module named _dummy_thread - imported by cffi.lock (conditional, optional), numpy.core.arrayprint (optional)
missing module named numpy.core.result_type - imported by numpy.core (delayed), numpy.testing._private.utils (delayed)
@@ -184,6 +186,7 @@ missing module named numpy.dtype - imported by numpy (top-level), numpy._typing.
missing module named numpy.ndarray - imported by numpy (top-level), numpy._typing._array_like (top-level), numpy.ma.core (top-level), numpy.ma.extras (top-level), numpy.ma.mrecords (top-level), numpy.ctypeslib (top-level)
missing module named numpy.ufunc - imported by numpy (top-level), numpy._typing (top-level)
missing module named numpy.histogramdd - imported by numpy (delayed), numpy.lib.twodim_base (delayed)
missing module named olefile - imported by PIL.FpxImagePlugin (top-level), PIL.MicImagePlugin (top-level)
missing module named dummy_thread - imported by cffi.lock (conditional, optional)
missing module named thread - imported by cffi.lock (conditional, optional), cffi.cparser (conditional, optional)
missing module named cStringIO - imported by cffi.ffiplatform (optional)

View File

@@ -2,7 +2,7 @@
<html>
<head>
<meta charset="UTF-8">
<title>modulegraph cross reference for optimize_textures.py, pyi_rth_inspect.py, pyi_rth_multiprocessing.py, pyi_rth_pkgres.py, pyi_rth_pkgutil.py, pyi_rth_pythoncom.py, pyi_rth_pywintypes.py, pyi_rth_setuptools.py</title>
<title>modulegraph cross reference for freeze_support.py, optimize_textures.py, pyi_rth_inspect.py, pyi_rth_multiprocessing.py, pyi_rth_pkgres.py, pyi_rth_pkgutil.py, pyi_rth_pythoncom.py, pyi_rth_pywintypes.py, pyi_rth_setuptools.py</title>
<style>
.node { padding: 0.5em 0 0.5em; border-top: thin grey dotted; }
.moduletype { font: smaller italic }
@@ -11,7 +11,24 @@
</style>
</head>
<body>
<h1>modulegraph cross reference for optimize_textures.py, pyi_rth_inspect.py, pyi_rth_multiprocessing.py, pyi_rth_pkgres.py, pyi_rth_pkgutil.py, pyi_rth_pythoncom.py, pyi_rth_pywintypes.py, pyi_rth_setuptools.py</h1>
<h1>modulegraph cross reference for freeze_support.py, optimize_textures.py, pyi_rth_inspect.py, pyi_rth_multiprocessing.py, pyi_rth_pkgres.py, pyi_rth_pkgutil.py, pyi_rth_pythoncom.py, pyi_rth_pywintypes.py, pyi_rth_setuptools.py</h1>
<div class="node">
<a name="freeze_support.py"></a>
<a target="code" href="///E:/Arma%20Reforger%20Work/1960-utils/Texturing/OptimizeTextures/freeze_support.py" type="text/plain"><tt>freeze_support.py</tt></a>
<span class="moduletype">Script</span> <div class="import">
imports:
<a href="#multiprocessing">multiprocessing</a>
&#8226; <a href="#sys">sys</a>
</div>
<div class="import">
imported by:
<a href="#optimize_textures.py">optimize_textures.py</a>
</div>
</div>
<div class="node">
<a name="optimize_textures.py"></a>
@@ -26,6 +43,7 @@ imports:
&#8226; <a href="#codecs">codecs</a>
&#8226; <a href="#collections">collections</a>
&#8226; <a href="#collections.abc">collections.abc</a>
&#8226; <a href="#concurrent.futures">concurrent.futures</a>
&#8226; <a href="#copyreg">copyreg</a>
&#8226; <a href="#encodings">encodings</a>
&#8226; <a href="#encodings.aliases">encodings.aliases</a>
@@ -150,6 +168,7 @@ imports:
&#8226; <a href="#encodings.uu_codec">encodings.uu_codec</a>
&#8226; <a href="#encodings.zlib_codec">encodings.zlib_codec</a>
&#8226; <a href="#enum">enum</a>
&#8226; <a href="#freeze_support.py">freeze_support.py</a>
&#8226; <a href="#functools">functools</a>
&#8226; <a href="#genericpath">genericpath</a>
&#8226; <a href="#heapq">heapq</a>
@@ -157,7 +176,23 @@ imports:
&#8226; <a href="#keyword">keyword</a>
&#8226; <a href="#linecache">linecache</a>
&#8226; <a href="#locale">locale</a>
&#8226; <a href="#multiprocessing">multiprocessing</a>
&#8226; <a href="#multiprocessing.Pool">multiprocessing.Pool</a>
&#8226; <a href="#multiprocessing.connection">multiprocessing.connection</a>
&#8226; <a href="#multiprocessing.context">multiprocessing.context</a>
&#8226; <a href="#multiprocessing.cpu_count">multiprocessing.cpu_count</a>
&#8226; <a href="#multiprocessing.freeze_support">multiprocessing.freeze_support</a>
&#8226; <a href="#multiprocessing.managers">multiprocessing.managers</a>
&#8226; <a href="#multiprocessing.pool">multiprocessing.pool</a>
&#8226; <a href="#multiprocessing.queues">multiprocessing.queues</a>
&#8226; <a href="#multiprocessing.reduction">multiprocessing.reduction</a>
&#8226; <a href="#multiprocessing.shared_memory">multiprocessing.shared_memory</a>
&#8226; <a href="#multiprocessing.sharedctypes">multiprocessing.sharedctypes</a>
&#8226; <a href="#multiprocessing.spawn">multiprocessing.spawn</a>
&#8226; <a href="#multiprocessing.synchronize">multiprocessing.synchronize</a>
&#8226; <a href="#multiprocessing.util">multiprocessing.util</a>
&#8226; <a href="#ntpath">ntpath</a>
&#8226; <a href="#numpy">numpy</a>
&#8226; <a href="#operator">operator</a>
&#8226; <a href="#os">os</a>
&#8226; <a href="#posixpath">posixpath</a>
@@ -175,10 +210,10 @@ imports:
&#8226; <a href="#sre_parse">sre_parse</a>
&#8226; <a href="#stat">stat</a>
&#8226; <a href="#sys">sys</a>
&#8226; <a href="#threading">threading</a>
&#8226; <a href="#time">time</a>
&#8226; <a href="#traceback">traceback</a>
&#8226; <a href="#types">types</a>
&#8226; <a href="#unittest">unittest</a>
&#8226; <a href="#warnings">warnings</a>
&#8226; <a href="#weakref">weakref</a>
@@ -347,7 +382,7 @@ imported by:
<a target="code" href="" type="text/plain"><tt>'org.python'</tt></a>
<span class="moduletype">MissingModule</span> <div class="import">
imported by:
<a href="#pickle">pickle</a>
<a href="#copy">copy</a>
&#8226; <a href="#xml.sax">xml.sax</a>
</div>
@@ -5907,6 +5942,7 @@ imported by:
&#8226; <a href="#concurrent.futures.process">concurrent.futures.process</a>
&#8226; <a href="#concurrent.futures.thread">concurrent.futures.thread</a>
&#8226; <a href="#distutils.command.build_ext">distutils.command.build_ext</a>
&#8226; <a href="#optimize_textures.py">optimize_textures.py</a>
&#8226; <a href="#setuptools._distutils.command.build_ext">setuptools._distutils.command.build_ext</a>
</div>
@@ -6141,8 +6177,8 @@ imported by:
<a target="code" href="///C:/Program%20Files/WindowsApps/PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0/lib/copy.py" type="text/plain"><tt>copy</tt></a>
<span class="moduletype">SourceModule</span> <div class="import">
imports:
<a href="#copyreg">copyreg</a>
&#8226; <a href="#org">org</a>
<a href="#'org.python'">'org.python'</a>
&#8226; <a href="#copyreg">copyreg</a>
&#8226; <a href="#types">types</a>
&#8226; <a href="#weakref">weakref</a>
@@ -13606,10 +13642,13 @@ imports:
<a href="#multiprocessing">multiprocessing</a>
&#8226; <a href="#multiprocessing.AuthenticationError">multiprocessing.AuthenticationError</a>
&#8226; <a href="#multiprocessing.BufferTooShort">multiprocessing.BufferTooShort</a>
&#8226; <a href="#multiprocessing.Pool">multiprocessing.Pool</a>
&#8226; <a href="#multiprocessing.TimeoutError">multiprocessing.TimeoutError</a>
&#8226; <a href="#multiprocessing.connection">multiprocessing.connection</a>
&#8226; <a href="#multiprocessing.context">multiprocessing.context</a>
&#8226; <a href="#multiprocessing.cpu_count">multiprocessing.cpu_count</a>
&#8226; <a href="#multiprocessing.forkserver">multiprocessing.forkserver</a>
&#8226; <a href="#multiprocessing.freeze_support">multiprocessing.freeze_support</a>
&#8226; <a href="#multiprocessing.get_context">multiprocessing.get_context</a>
&#8226; <a href="#multiprocessing.get_start_method">multiprocessing.get_start_method</a>
&#8226; <a href="#multiprocessing.pool">multiprocessing.pool</a>
@@ -13627,6 +13666,7 @@ imports:
<div class="import">
imported by:
<a href="#concurrent.futures.process">concurrent.futures.process</a>
&#8226; <a href="#freeze_support.py">freeze_support.py</a>
&#8226; <a href="#multiprocessing">multiprocessing</a>
&#8226; <a href="#multiprocessing.connection">multiprocessing.connection</a>
&#8226; <a href="#multiprocessing.context">multiprocessing.context</a>
@@ -13649,6 +13689,7 @@ imported by:
&#8226; <a href="#multiprocessing.spawn">multiprocessing.spawn</a>
&#8226; <a href="#multiprocessing.synchronize">multiprocessing.synchronize</a>
&#8226; <a href="#multiprocessing.util">multiprocessing.util</a>
&#8226; <a href="#optimize_textures.py">optimize_textures.py</a>
&#8226; <a href="#pyi_rth_multiprocessing.py">pyi_rth_multiprocessing.py</a>
</div>
@@ -13679,6 +13720,18 @@ imported by:
</div>
<div class="node">
<a name="multiprocessing.Pool"></a>
<a target="code" href="" type="text/plain"><tt>multiprocessing.Pool</tt></a>
<span class="moduletype">MissingModule</span> <div class="import">
imported by:
<a href="#multiprocessing">multiprocessing</a>
&#8226; <a href="#optimize_textures.py">optimize_textures.py</a>
</div>
</div>
<div class="node">
<a name="multiprocessing.TimeoutError"></a>
<a target="code" href="" type="text/plain"><tt>multiprocessing.TimeoutError</tt></a>
@@ -13730,6 +13783,7 @@ imported by:
&#8226; <a href="#multiprocessing.process">multiprocessing.process</a>
&#8226; <a href="#multiprocessing.queues">multiprocessing.queues</a>
&#8226; <a href="#multiprocessing.resource_sharer">multiprocessing.resource_sharer</a>
&#8226; <a href="#optimize_textures.py">optimize_textures.py</a>
</div>
@@ -13778,6 +13832,19 @@ imported by:
&#8226; <a href="#multiprocessing.sharedctypes">multiprocessing.sharedctypes</a>
&#8226; <a href="#multiprocessing.spawn">multiprocessing.spawn</a>
&#8226; <a href="#multiprocessing.synchronize">multiprocessing.synchronize</a>
&#8226; <a href="#optimize_textures.py">optimize_textures.py</a>
</div>
</div>
<div class="node">
<a name="multiprocessing.cpu_count"></a>
<a target="code" href="" type="text/plain"><tt>multiprocessing.cpu_count</tt></a>
<span class="moduletype">MissingModule</span> <div class="import">
imported by:
<a href="#multiprocessing">multiprocessing</a>
&#8226; <a href="#optimize_textures.py">optimize_textures.py</a>
</div>
@@ -13858,6 +13925,18 @@ imported by:
</div>
<div class="node">
<a name="multiprocessing.freeze_support"></a>
<a target="code" href="" type="text/plain"><tt>multiprocessing.freeze_support</tt></a>
<span class="moduletype">MissingModule</span> <div class="import">
imported by:
<a href="#multiprocessing">multiprocessing</a>
&#8226; <a href="#optimize_textures.py">optimize_textures.py</a>
</div>
</div>
<div class="node">
<a name="multiprocessing.get_context"></a>
<a target="code" href="" type="text/plain"><tt>multiprocessing.get_context</tt></a>
@@ -13939,6 +14018,7 @@ imports:
<div class="import">
imported by:
<a href="#multiprocessing.context">multiprocessing.context</a>
&#8226; <a href="#optimize_textures.py">optimize_textures.py</a>
</div>
@@ -13972,6 +14052,7 @@ imported by:
&#8226; <a href="#multiprocessing.context">multiprocessing.context</a>
&#8226; <a href="#multiprocessing.dummy">multiprocessing.dummy</a>
&#8226; <a href="#multiprocessing.managers">multiprocessing.managers</a>
&#8226; <a href="#optimize_textures.py">optimize_textures.py</a>
</div>
@@ -14133,6 +14214,7 @@ imports:
imported by:
<a href="#concurrent.futures.process">concurrent.futures.process</a>
&#8226; <a href="#multiprocessing.context">multiprocessing.context</a>
&#8226; <a href="#optimize_textures.py">optimize_textures.py</a>
</div>
@@ -14162,6 +14244,7 @@ imports:
imported by:
<a href="#multiprocessing">multiprocessing</a>
&#8226; <a href="#multiprocessing.context">multiprocessing.context</a>
&#8226; <a href="#optimize_textures.py">optimize_textures.py</a>
</div>
@@ -14260,6 +14343,7 @@ imports:
imported by:
<a href="#multiprocessing">multiprocessing</a>
&#8226; <a href="#multiprocessing.managers">multiprocessing.managers</a>
&#8226; <a href="#optimize_textures.py">optimize_textures.py</a>
</div>
@@ -14281,6 +14365,7 @@ imports:
<div class="import">
imported by:
<a href="#multiprocessing.context">multiprocessing.context</a>
&#8226; <a href="#optimize_textures.py">optimize_textures.py</a>
</div>
@@ -14315,6 +14400,7 @@ imported by:
&#8226; <a href="#multiprocessing.popen_spawn_posix">multiprocessing.popen_spawn_posix</a>
&#8226; <a href="#multiprocessing.popen_spawn_win32">multiprocessing.popen_spawn_win32</a>
&#8226; <a href="#multiprocessing.resource_tracker">multiprocessing.resource_tracker</a>
&#8226; <a href="#optimize_textures.py">optimize_textures.py</a>
&#8226; <a href="#pyi_rth_multiprocessing.py">pyi_rth_multiprocessing.py</a>
</div>
@@ -14345,6 +14431,7 @@ imported by:
<a href="#concurrent.futures.process">concurrent.futures.process</a>
&#8226; <a href="#multiprocessing.context">multiprocessing.context</a>
&#8226; <a href="#multiprocessing.queues">multiprocessing.queues</a>
&#8226; <a href="#optimize_textures.py">optimize_textures.py</a>
</div>
@@ -14392,6 +14479,7 @@ imported by:
&#8226; <a href="#multiprocessing.resource_tracker">multiprocessing.resource_tracker</a>
&#8226; <a href="#multiprocessing.spawn">multiprocessing.spawn</a>
&#8226; <a href="#multiprocessing.synchronize">multiprocessing.synchronize</a>
&#8226; <a href="#optimize_textures.py">optimize_textures.py</a>
</div>
@@ -14670,6 +14758,7 @@ imported by:
&#8226; <a href="#numpy.testing._private.utils">numpy.testing._private.utils</a>
&#8226; <a href="#numpy.typing">numpy.typing</a>
&#8226; <a href="#numpy.version">numpy.version</a>
&#8226; <a href="#optimize_textures.py">optimize_textures.py</a>
</div>
@@ -19527,7 +19616,7 @@ imported by:
<a target="code" href="" type="text/plain"><tt>org</tt></a>
<span class="moduletype">MissingModule</span> <div class="import">
imported by:
<a href="#copy">copy</a>
<a href="#pickle">pickle</a>
</div>
@@ -20297,14 +20386,14 @@ imported by:
<a target="code" href="///C:/Program%20Files/WindowsApps/PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0/lib/pickle.py" type="text/plain"><tt>pickle</tt></a>
<span class="moduletype">SourceModule</span> <div class="import">
imports:
<a href="#'org.python'">'org.python'</a>
&#8226; <a href="#_compat_pickle">_compat_pickle</a>
<a href="#_compat_pickle">_compat_pickle</a>
&#8226; <a href="#_pickle">_pickle</a>
&#8226; <a href="#codecs">codecs</a>
&#8226; <a href="#copyreg">copyreg</a>
&#8226; <a href="#functools">functools</a>
&#8226; <a href="#io">io</a>
&#8226; <a href="#itertools">itertools</a>
&#8226; <a href="#org">org</a>
&#8226; <a href="#pprint">pprint</a>
&#8226; <a href="#re">re</a>
&#8226; <a href="#struct">struct</a>
@@ -28704,6 +28793,7 @@ imported by:
&#8226; <a href="#encodings.utf_32">encodings.utf_32</a>
&#8226; <a href="#enum">enum</a>
&#8226; <a href="#fractions">fractions</a>
&#8226; <a href="#freeze_support.py">freeze_support.py</a>
&#8226; <a href="#ftplib">ftplib</a>
&#8226; <a href="#getopt">getopt</a>
&#8226; <a href="#getpass">getpass</a>
@@ -29176,6 +29266,7 @@ imported by:
&#8226; <a href="#multiprocessing.resource_tracker">multiprocessing.resource_tracker</a>
&#8226; <a href="#multiprocessing.synchronize">multiprocessing.synchronize</a>
&#8226; <a href="#multiprocessing.util">multiprocessing.util</a>
&#8226; <a href="#optimize_textures.py">optimize_textures.py</a>
&#8226; <a href="#pkg_resources._vendor.pyparsing.core">pkg_resources._vendor.pyparsing.core</a>
&#8226; <a href="#psutil">psutil</a>
&#8226; <a href="#psutil._common">psutil._common</a>
@@ -29781,7 +29872,6 @@ imported by:
&#8226; <a href="#numpy.testing">numpy.testing</a>
&#8226; <a href="#numpy.testing._private.parameterized">numpy.testing._private.parameterized</a>
&#8226; <a href="#numpy.testing._private.utils">numpy.testing._private.utils</a>
&#8226; <a href="#optimize_textures.py">optimize_textures.py</a>
&#8226; <a href="#unittest">unittest</a>
&#8226; <a href="#unittest._log">unittest._log</a>
&#8226; <a href="#unittest.async_case">unittest.async_case</a>
@@ -31465,7 +31555,6 @@ imported by:
<span class="moduletype">Package</span> <div class="import">
imports:
<a href="#xml">xml</a>
&#8226; <a href="#xml.parsers.expat">xml.parsers.expat</a>
</div>
<div class="import">
@@ -31496,7 +31585,6 @@ imported by:
&#8226; <a href="#plistlib">plistlib</a>
&#8226; <a href="#xml.dom.expatbuilder">xml.dom.expatbuilder</a>
&#8226; <a href="#xml.etree.ElementTree">xml.etree.ElementTree</a>
&#8226; <a href="#xml.parsers">xml.parsers</a>
&#8226; <a href="#xml.sax.expatreader">xml.sax.expatreader</a>
&#8226; <a href="#xmlrpc.client">xmlrpc.client</a>

View File

@@ -0,0 +1,6 @@
import multiprocessing
import sys
if getattr(sys, 'frozen', False):
# Running as a frozen executable
multiprocessing.freeze_support()

View File

@@ -1,35 +1,114 @@
from unittest import skip
from PIL import Image
import sys
import os
import time
import numpy as np
from multiprocessing import Pool, cpu_count, freeze_support
from concurrent.futures import ThreadPoolExecutor
import threading
if len(sys.argv) < 1:
def process_image(args):
input_path, export_dir, idx, total = args
try:
# Open image and check if it has alpha
currentTex = Image.open(input_path)
has_alpha = currentTex.mode == 'RGBA'
was_resized = False
if has_alpha:
# Get the alpha channel
r, g, b, a = currentTex.split()
# Convert alpha to numpy array to check its values
alpha_array = np.array(a)
# Check if alpha channel is useful (contains values other than 0 or 255)
has_useful_alpha = np.any((alpha_array > 0) & (alpha_array < 255))
if has_useful_alpha:
# If alpha is useful, keep it
if currentTex.size > (2048, 2048):
resizedTex = currentTex.resize((2048, 2048), Image.LANCZOS)
was_resized = True
else:
resizedTex = currentTex
else:
# If alpha is not useful (all black or all white), ignore it
currentTex = currentTex.convert('RGB')
if currentTex.size > (2048, 2048):
resizedTex = currentTex.resize((2048, 2048), Image.LANCZOS)
was_resized = True
else:
resizedTex = currentTex
# Create new RGBA with full opacity
rgba_image = Image.new('RGBA', resizedTex.size)
rgba_image.paste(resizedTex, (0, 0))
resizedTex = rgba_image
else:
# No alpha channel, just resize if needed
if currentTex.size > (2048, 2048):
resizedTex = currentTex.resize((2048, 2048), Image.LANCZOS)
was_resized = True
else:
resizedTex = currentTex
# Convert to RGBA with full opacity
rgba_image = Image.new('RGBA', resizedTex.size)
rgba_image.paste(resizedTex, (0, 0))
resizedTex = rgba_image
# Change the file extension to .tga
output_filename = os.path.splitext(os.path.basename(input_path))[0] + '.tga'
output_path = os.path.join(export_dir, output_filename)
# Save as TGA format
resizedTex.save(output_path, format='TGA')
# Print appropriate message based on whether the file was resized
if was_resized:
print(f"{os.path.basename(input_path)} optimized and converted to TGA ({idx}/{total})")
else:
print(f"{os.path.basename(input_path)} converted to TGA ({idx}/{total})")
except Exception as e:
print(f"Error processing {input_path} ({idx}/{total}): {e}")
def main():
if len(sys.argv) < 2:
print("Please provide the input files.")
sys.exit(1)
inputTexs = sys.argv
inputTexs = sys.argv[1:]
export_dir = os.path.join(os.path.dirname(inputTexs[0]), "optimized")
if not os.path.exists(os.path.join(os.path.dirname(inputTexs[1]),"optimized")):
os.mkdir(os.path.join(os.path.dirname(inputTexs[1]),"optimized"))
if not os.path.exists(export_dir):
os.mkdir(export_dir)
export_path = os.path.join(os.path.dirname(inputTexs[1]),"optimized")
total_files = len(inputTexs)
print(f"Starting optimization of {total_files} files")
print("Starting optimization of " + str(len(inputTexs)-1) + " Files")
# Start timing
start_time = time.perf_counter()
for i in range(1,len(inputTexs),1):
currentTex = Image.open(inputTexs[i])
args_list = [
(input_path, export_dir, idx + 1, total_files)
for idx, input_path in enumerate(inputTexs)
]
if currentTex.size <= (2048,2048):
print (f"{os.path.basename(inputTexs[i])} is already smaller than 2048x2048")
continue
# Check if running as a frozen executable
if getattr(sys, 'frozen', False):
# Use ThreadPoolExecutor when frozen
max_workers = min(32, (os.cpu_count() or 1) + 4)
with ThreadPoolExecutor(max_workers=max_workers) as executor:
list(executor.map(process_image, args_list))
else:
# Use multiprocessing when running from console
with Pool(processes=cpu_count()) as pool:
pool.map(process_image, args_list)
# End timing
end_time = time.perf_counter()
elapsed_time = end_time - start_time
# downsize the image with an LANCZOS filter (gives the highest quality)
resizedTex = currentTex.resize((2048,2048),Image.LANCZOS)
resizedTex.save(str(export_path) + "\\" + os.path.basename(inputTexs[i]), optimize=True, quality=95)
print (os.path.basename(inputTexs[i]) + " successfully converted " + "(" + str(i) + "/" + str(len(inputTexs)-1) + ")")
print("Textures successfully resized!")
print(f"Textures successfully resized in {elapsed_time:.2f} seconds!")
time.sleep(5)
if __name__ == "__main__":
freeze_support()
main()

View File

@@ -6,10 +6,10 @@ a = Analysis(
pathex=[],
binaries=[],
datas=[],
hiddenimports=[],
hiddenimports=['multiprocessing', 'multiprocessing.pool', 'multiprocessing.util', 'multiprocessing.forking', 'multiprocessing.spawn', 'multiprocessing.context', 'multiprocessing.reduction', 'multiprocessing.sharedctypes', 'multiprocessing.connection', 'multiprocessing.managers', 'multiprocessing.synchronize', 'multiprocessing.queues', 'multiprocessing.shared_memory', 'concurrent.futures'],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
runtime_hooks=['freeze_support.py'],
excludes=[],
noarchive=False,
)