Compare commits

...

10 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
Killergnom
8f22b28e0c Merge branch 'main' of http://nziegert.synology.me:3003/1960Life/1960-utils 2024-10-26 22:20:19 +02:00
Killergnom
12da9be4b3 Fixed Crash in Optimize_Textures 2024-10-26 22:19:54 +02:00
23 changed files with 1291 additions and 904 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

@@ -1,10 +1,10 @@
('E:\\Arma Reforger Work\\1960 '
'Life\\1960-utils\\Texturing\\OptimizeTextures\\dist\\optimize_textures.exe',
('E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\dist\\optimize_textures.exe',
True,
False,
False,
['E:\\Arma Reforger Work\\1960 '
'Life\\1960-utils\\Texturing\\OptimizeTextures\\optimizeTextures.ico'],
['E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\optimizeTextures.ico'],
None,
False,
False,
@@ -31,74 +31,78 @@
None,
None,
None,
'E:\\Arma Reforger Work\\1960 '
'Life\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\optimize_textures.pkg',
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\optimize_textures.pkg',
[('pyi-contents-directory _internal', '', 'OPTION'),
('PYZ-00.pyz',
'E:\\Arma Reforger Work\\1960 '
'Life\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\PYZ-00.pyz',
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\PYZ-00.pyz',
'PYZ'),
('struct',
'E:\\Arma Reforger Work\\1960 '
'Life\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\localpycs\\struct.pyc',
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\localpycs\\struct.pyc',
'PYMODULE'),
('pyimod01_archive',
'E:\\Arma Reforger Work\\1960 '
'Life\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\localpycs\\pyimod01_archive.pyc',
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\localpycs\\pyimod01_archive.pyc',
'PYMODULE'),
('pyimod02_importers',
'E:\\Arma Reforger Work\\1960 '
'Life\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\localpycs\\pyimod02_importers.pyc',
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\localpycs\\pyimod02_importers.pyc',
'PYMODULE'),
('pyimod03_ctypes',
'E:\\Arma Reforger Work\\1960 '
'Life\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\localpycs\\pyimod03_ctypes.pyc',
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\localpycs\\pyimod03_ctypes.pyc',
'PYMODULE'),
('pyimod04_pywin32',
'E:\\Arma Reforger Work\\1960 '
'Life\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\localpycs\\pyimod04_pywin32.pyc',
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\localpycs\\pyimod04_pywin32.pyc',
'PYMODULE'),
('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'),
('optimize_textures',
'E:\\Arma Reforger Work\\1960 '
'Life\\1960-utils\\Texturing\\OptimizeTextures\\optimize_textures.py',
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\optimize_textures.py',
'PYSOURCE'),
('python310.dll',
'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'),
@@ -274,20 +278,24 @@
'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'),
('base_library.zip',
'E:\\Arma Reforger Work\\1960 '
'Life\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\base_library.zip',
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\base_library.zip',
'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\\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\\RECORD',
('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\\RECORD',
'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\\LICENSE',
('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\\LICENSE',
'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 '
@@ -297,22 +305,18 @@
'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\\REQUESTED',
('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\\REQUESTED',
'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',
('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\\entry_points.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',
'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,
1711309433,
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

@@ -1,5 +1,5 @@
('E:\\Arma Reforger Work\\1960 '
'Life\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\optimize_textures.pkg',
('E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\optimize_textures.pkg',
{'BINARY': True,
'DATA': True,
'EXECUTABLE': True,
@@ -11,70 +11,74 @@
'SYMLINK': False},
[('pyi-contents-directory _internal', '', 'OPTION'),
('PYZ-00.pyz',
'E:\\Arma Reforger Work\\1960 '
'Life\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\PYZ-00.pyz',
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\PYZ-00.pyz',
'PYZ'),
('struct',
'E:\\Arma Reforger Work\\1960 '
'Life\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\localpycs\\struct.pyc',
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\localpycs\\struct.pyc',
'PYMODULE'),
('pyimod01_archive',
'E:\\Arma Reforger Work\\1960 '
'Life\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\localpycs\\pyimod01_archive.pyc',
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\localpycs\\pyimod01_archive.pyc',
'PYMODULE'),
('pyimod02_importers',
'E:\\Arma Reforger Work\\1960 '
'Life\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\localpycs\\pyimod02_importers.pyc',
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\localpycs\\pyimod02_importers.pyc',
'PYMODULE'),
('pyimod03_ctypes',
'E:\\Arma Reforger Work\\1960 '
'Life\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\localpycs\\pyimod03_ctypes.pyc',
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\localpycs\\pyimod03_ctypes.pyc',
'PYMODULE'),
('pyimod04_pywin32',
'E:\\Arma Reforger Work\\1960 '
'Life\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\localpycs\\pyimod04_pywin32.pyc',
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\localpycs\\pyimod04_pywin32.pyc',
'PYMODULE'),
('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'),
('optimize_textures',
'E:\\Arma Reforger Work\\1960 '
'Life\\1960-utils\\Texturing\\OptimizeTextures\\optimize_textures.py',
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\optimize_textures.py',
'PYSOURCE'),
('python310.dll',
'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'),
@@ -250,20 +254,24 @@
'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'),
('base_library.zip',
'E:\\Arma Reforger Work\\1960 '
'Life\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\base_library.zip',
'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\base_library.zip',
'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\\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\\RECORD',
('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\\RECORD',
'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\\LICENSE',
('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\\LICENSE',
'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 '
@@ -273,17 +281,13 @@
'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\\REQUESTED',
('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\\REQUESTED',
'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',
('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\\entry_points.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',
'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

@@ -1,5 +1,5 @@
('E:\\Arma Reforger Work\\1960 '
'Life\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\PYZ-00.pyz',
('E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\OptimizeTextures\\build\\optimize_textures\\PYZ-00.pyz',
[('PIL',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PIL\\__init__.py',
'PYMODULE'),

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,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,11 +11,28 @@
</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>
<a target="code" href="///E:/Arma%20Reforger%20Work/1960%20Life/1960-utils/Texturing/OptimizeTextures/optimize_textures.py" type="text/plain"><tt>optimize_textures.py</tt></a>
<a target="code" href="///E:/Arma%20Reforger%20Work/1960-utils/Texturing/OptimizeTextures/optimize_textures.py" type="text/plain"><tt>optimize_textures.py</tt></a>
<span class="moduletype">Script</span> <div class="import">
imports:
<a href="#PIL">PIL</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>
@@ -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>
@@ -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>
@@ -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 (currentTex + "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)
print(f"Textures successfully resized in {elapsed_time:.2f} seconds!")
time.sleep(5)
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!")
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,
)