Texture Utility Tool
JO00
python
a month ago
104 kB
12
Indexable
# Form implementation generated from reading ui file 'daisy_5.ui'
#
# Created by: PyQt6 UI code generator 6.4.2
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets
from PyQt6.QtWidgets import QFileDialog,QMainWindow
import os
import math
import PIL.Image
from PIL import Image
################################################
############# parameters for dropdowns and default file locations
############################################
dropdown_options=['Targa (.TGA)', 'Web Picture (.WEBP)','PNG (.PNG)', 'JPEG (.JPEG)']
dropdown_endings=['.tga','.webp','.png','.jpeg','.jpg']
dropdown_filesize=['KB','MB','GB']
stored_images=[]
thumbnail_counter=0
thumbnail_current_loaded=0
dropdown_scale=['Increase Resolution','Reduce Resolution']
dropdown_resolutions_pick=['256','512','1024','2048','4096']
dropdown_resolutions_pick_view=['256 x 256','512 x 512','1024 x 1024','2048 x 2048','4096 x 4096']
file_path_to_script=os.path.dirname(os.path.abspath(__file__))
default_picture=str(str(file_path_to_script[:-6]))+"/files/uv_empty.png"
daisy_icon=str(str(file_path_to_script[:-6]))+"/files/daisy_icon.png"
stored_combiner_files=[0,0,0,0]
from pathlib import Path
save_file_path_split_comb=str(Path.home() / "Downloads")
############start the script ui
class Ui_DaisyWindow(object):
def setupUi(self, DaisyWindow):
DaisyWindow.setObjectName("DaisyWindow")
DaisyWindow.resize(845, 688)
self.config_load_icons()
###############################################################
##this is tab 1 for file format saving and general ui stuff
#####################
self.centralwidget = QtWidgets.QWidget(parent=DaisyWindow)
self.centralwidget.setObjectName("centralwidget")
self.label_title = QtWidgets.QLabel(parent=self.centralwidget)
self.label_title.setGeometry(QtCore.QRect(20, 40, 251, 61))
font = QtGui.QFont()
font.setPointSize(19)
font.setBold(True)
font.setUnderline(True)
self.label_title.setFont(font)
self.label_title.setAutoFillBackground(False)
self.label_title.setFrameShape(QtWidgets.QFrame.Shape.NoFrame)
self.label_title.setFrameShadow(QtWidgets.QFrame.Shadow.Plain)
self.label_title.setScaledContents(False)
self.label_title.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.label_title.setWordWrap(True)
self.label_title.setIndent(-1)
self.label_title.setObjectName("label_title")
self.label_Thumbnail_Preview = QtWidgets.QLabel(parent=self.centralwidget)
self.label_Thumbnail_Preview.setGeometry(QtCore.QRect(40, 260, 251, 251))
font = QtGui.QFont()
font.setPointSize(1)
font.setBold(False)
self.label_Thumbnail_Preview.setFont(font)
self.label_Thumbnail_Preview.setAutoFillBackground(False)
self.label_Thumbnail_Preview.setText("")
self.label_Thumbnail_Preview.setPixmap(QtGui.QPixmap(default_picture))
self.label_Thumbnail_Preview.setScaledContents(True)
self.label_Thumbnail_Preview.setObjectName("label_Thumbnail_Preview")
self.label_instructions = QtWidgets.QLabel(parent=self.centralwidget)
self.label_instructions.setGeometry(QtCore.QRect(40, 110, 251, 81))
font = QtGui.QFont()
font.setBold(False)
font.setStrikeOut(False)
font.setKerning(True)
self.label_instructions.setFont(font)
self.label_instructions.setWordWrap(True)
self.label_instructions.setObjectName("label_instructions")
self.button_thumb_left = QtWidgets.QPushButton(parent=self.centralwidget)
self.button_thumb_left.setGeometry(QtCore.QRect(70, 550, 41, 24))
self.button_thumb_left.setObjectName("button_thumb_left")
self.label_name_current_file = QtWidgets.QLabel(parent=self.centralwidget)
self.label_name_current_file.setGeometry(QtCore.QRect(40, 230, 251, 16))
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Active, QtGui.QPalette.ColorRole.WindowText, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Active, QtGui.QPalette.ColorRole.Text, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Inactive, QtGui.QPalette.ColorRole.WindowText, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Inactive, QtGui.QPalette.ColorRole.Text, brush)
self.label_name_current_file.setPalette(palette)
font = QtGui.QFont()
font.setBold(True)
font.setItalic(True)
self.label_name_current_file.setFont(font)
self.label_name_current_file.setWordWrap(True)
self.label_name_current_file.setObjectName("label_name_current_file")
self.label_loaded_thumb_title = QtWidgets.QLabel(parent=self.centralwidget)
self.label_loaded_thumb_title.setGeometry(QtCore.QRect(40, 200, 251, 16))
font = QtGui.QFont()
font.setPointSize(11)
font.setBold(True)
self.label_loaded_thumb_title.setFont(font)
self.label_loaded_thumb_title.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.label_loaded_thumb_title.setWordWrap(True)
self.label_loaded_thumb_title.setObjectName("label_loaded_thumb_title")
self.button_thumb_right = QtWidgets.QPushButton(parent=self.centralwidget)
self.button_thumb_right.setGeometry(QtCore.QRect(220, 550, 41, 24))
self.button_thumb_right.setObjectName("button_thumb_right")
self.lbl_thumbprev = QtWidgets.QLabel(parent=self.centralwidget)
self.lbl_thumbprev.setGeometry(QtCore.QRect(40, 520, 251, 21))
font = QtGui.QFont()
font.setBold(True)
self.lbl_thumbprev.setFont(font)
self.lbl_thumbprev.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.lbl_thumbprev.setObjectName("lbl_thumbprev")
self.tabs_functions = QtWidgets.QTabWidget(parent=self.centralwidget)
self.tabs_functions.setGeometry(QtCore.QRect(310, 20, 521, 641))
self.tabs_functions.setObjectName("tabs_functions")
self.tabs_functions.currentChanged.connect(self.swap_title_tabber)
self.tab = QtWidgets.QWidget()
self.tab.setObjectName("tab")
self.frame_button_hold = QtWidgets.QFrame(parent=self.tab)
self.frame_button_hold.setGeometry(QtCore.QRect(10, 10, 491, 591))
self.frame_button_hold.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame_button_hold.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
self.frame_button_hold.setLineWidth(5)
self.frame_button_hold.setMidLineWidth(7)
self.frame_button_hold.setObjectName("frame_button_hold")
self.label_intro_convert_type = QtWidgets.QLabel(parent=self.frame_button_hold)
self.label_intro_convert_type.setGeometry(QtCore.QRect(40, 20, 251, 16))
font = QtGui.QFont()
font.setBold(True)
font.setStrikeOut(False)
font.setKerning(True)
self.label_intro_convert_type.setFont(font)
self.label_intro_convert_type.setWordWrap(True)
self.label_intro_convert_type.setObjectName("label_intro_convert_type")
self.combo_file_types = QtWidgets.QComboBox(parent=self.frame_button_hold)
self.combo_file_types.setGeometry(QtCore.QRect(40, 40, 221, 21))
self.combo_file_types.setStyleSheet("background-color: rgb(255, 80, 83)")
self.combo_file_types.setCurrentText("")
self.combo_file_types.setObjectName("combo_file_types")
self.combo_file_types.addItems(dropdown_options)
self.combo_file_types.currentIndexChanged.connect(self.file_size_getter)
self.label_Step_1 = QtWidgets.QLabel(parent=self.frame_button_hold)
self.label_Step_1.setGeometry(QtCore.QRect(10, 20, 21, 31))
font = QtGui.QFont()
font.setPointSize(20)
font.setBold(True)
font.setUnderline(True)
font.setStrikeOut(False)
font.setKerning(True)
self.label_Step_1.setFont(font)
self.label_Step_1.setWordWrap(True)
self.label_Step_1.setObjectName("label_Step_1")
self.label_Step_2 = QtWidgets.QLabel(parent=self.frame_button_hold)
self.label_Step_2.setGeometry(QtCore.QRect(10, 110, 21, 31))
font = QtGui.QFont()
font.setPointSize(20)
font.setBold(True)
font.setUnderline(True)
font.setStrikeOut(False)
font.setKerning(True)
self.label_Step_2.setFont(font)
self.label_Step_2.setWordWrap(True)
self.label_Step_2.setObjectName("label_Step_2")
self.label_intro_convert_type_2 = QtWidgets.QLabel(parent=self.frame_button_hold)
self.label_intro_convert_type_2.setGeometry(QtCore.QRect(40, 120, 441, 21))
font = QtGui.QFont()
font.setBold(True)
font.setStrikeOut(False)
font.setKerning(True)
self.label_intro_convert_type_2.setFont(font)
self.label_intro_convert_type_2.setWordWrap(True)
self.label_intro_convert_type_2.setObjectName("label_intro_convert_type_2")
self.label_Step_3 = QtWidgets.QLabel(parent=self.frame_button_hold)
self.label_Step_3.setGeometry(QtCore.QRect(10, 420, 21, 31))
font = QtGui.QFont()
font.setPointSize(20)
font.setBold(True)
font.setUnderline(True)
font.setStrikeOut(False)
font.setKerning(True)
self.label_Step_3.setFont(font)
self.label_Step_3.setWordWrap(True)
self.label_Step_3.setObjectName("label_Step_3")
self.label_intro_convert_type_6 = QtWidgets.QLabel(parent=self.frame_button_hold)
self.label_intro_convert_type_6.setGeometry(QtCore.QRect(40, 420, 441, 16))
font = QtGui.QFont()
font.setBold(True)
font.setStrikeOut(False)
font.setKerning(True)
self.label_intro_convert_type_6.setFont(font)
self.label_intro_convert_type_6.setWordWrap(True)
self.label_intro_convert_type_6.setObjectName("label_intro_convert_type_6")
self.button_convert_loaded = QtWidgets.QPushButton(parent=self.frame_button_hold)
self.button_convert_loaded.setGeometry(QtCore.QRect(40, 440, 201, 31))
self.button_convert_loaded.clicked.connect(self.convert_files)
font = QtGui.QFont()
font.setBold(True)
self.button_convert_loaded.setFont(font)
self.button_convert_loaded.setStyleSheet("background-color: rgb(213, 0, 255)")
self.button_convert_loaded.setObjectName("button_convert_loaded")
self.frame = QtWidgets.QFrame(parent=self.frame_button_hold)
self.frame.setGeometry(QtCore.QRect(120, 160, 361, 211))
self.frame.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
self.frame.setObjectName("frame")
self.label_old_filesize = QtWidgets.QLabel(parent=self.frame)
self.label_old_filesize.setGeometry(QtCore.QRect(100, 30, 251, 16))
font = QtGui.QFont()
font.setBold(False)
font.setStrikeOut(False)
font.setKerning(True)
self.label_old_filesize.setFont(font)
self.label_old_filesize.setStyleSheet("color: rgb(255, 0, 0);")
self.label_old_filesize.setWordWrap(True)
self.label_old_filesize.setObjectName("label_old_filesize")
self.label_file_res = QtWidgets.QLabel(parent=self.frame)
self.label_file_res.setGeometry(QtCore.QRect(100, 140, 251, 16))
font = QtGui.QFont()
font.setBold(False)
font.setStrikeOut(False)
font.setKerning(True)
self.label_file_res.setFont(font)
self.label_file_res.setWordWrap(True)
self.label_file_res.setObjectName("label_file_res")
self.label_desc_text_1 = QtWidgets.QLabel(parent=self.frame)
self.label_desc_text_1.setGeometry(QtCore.QRect(10, 30, 71, 71))
font = QtGui.QFont()
font.setBold(False)
font.setUnderline(True)
font.setStrikeOut(False)
font.setKerning(True)
self.label_desc_text_1.setFont(font)
self.label_desc_text_1.setWordWrap(True)
self.label_desc_text_1.setObjectName("label_desc_text_1")
self.label_channels = QtWidgets.QLabel(parent=self.frame)
self.label_channels.setGeometry(QtCore.QRect(100, 160, 251, 16))
font = QtGui.QFont()
font.setBold(False)
font.setStrikeOut(False)
font.setKerning(True)
self.label_channels.setFont(font)
self.label_channels.setWordWrap(True)
self.label_channels.setObjectName("label_channels")
self.label_desc_text_2 = QtWidgets.QLabel(parent=self.frame)
self.label_desc_text_2.setGeometry(QtCore.QRect(10, 120, 81, 71))
font = QtGui.QFont()
font.setBold(False)
font.setUnderline(True)
font.setStrikeOut(False)
font.setKerning(True)
self.label_desc_text_2.setFont(font)
self.label_desc_text_2.setWordWrap(True)
self.label_desc_text_2.setObjectName("label_desc_text_2")
self.label_size_difference = QtWidgets.QLabel(parent=self.frame)
self.label_size_difference.setGeometry(QtCore.QRect(100, 70, 251, 61))
font = QtGui.QFont()
font.setBold(False)
font.setStrikeOut(False)
font.setKerning(True)
self.label_size_difference.setFont(font)
self.label_size_difference.setStyleSheet("color:rgb(255, 113, 84)")
self.label_size_difference.setAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignLeft|QtCore.Qt.AlignmentFlag.AlignTop)
self.label_size_difference.setWordWrap(True)
self.label_size_difference.setObjectName("label_size_difference")
self.label_new_filesize = QtWidgets.QLabel(parent=self.frame)
self.label_new_filesize.setGeometry(QtCore.QRect(100, 50, 251, 16))
font = QtGui.QFont()
font.setBold(False)
font.setStrikeOut(False)
font.setKerning(True)
self.label_new_filesize.setFont(font)
self.label_new_filesize.setStyleSheet("color: rgb(0, 170, 0);")
self.label_new_filesize.setWordWrap(True)
self.label_new_filesize.setObjectName("label_new_filesize")
self.label_file_counter = QtWidgets.QLabel(parent=self.frame)
self.label_file_counter.setGeometry(QtCore.QRect(0, 0, 361, 21))
font = QtGui.QFont()
font.setBold(True)
font.setStrikeOut(False)
font.setKerning(True)
self.label_file_counter.setFont(font)
self.label_file_counter.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.label_file_counter.setWordWrap(True)
self.label_file_counter.setObjectName("label_file_counter")
self.comboBox_file_size_unit = QtWidgets.QComboBox(parent=self.frame_button_hold)
self.comboBox_file_size_unit.setGeometry(QtCore.QRect(20, 240, 91, 16))
self.comboBox_file_size_unit.setObjectName("comboBox_file_size_unit")
self.comboBox_file_size_unit.addItems(dropdown_filesize)
self.comboBox_file_size_unit.setCurrentIndex(1)
self.comboBox_file_size_unit.currentIndexChanged.connect(self.file_size_getter)
self.label_intro_convert_type_18 = QtWidgets.QLabel(parent=self.frame_button_hold)
self.label_intro_convert_type_18.setGeometry(QtCore.QRect(20, 210, 81, 21))
font = QtGui.QFont()
font.setBold(True)
font.setUnderline(True)
font.setStrikeOut(False)
font.setKerning(True)
self.label_intro_convert_type_18.setFont(font)
self.label_intro_convert_type_18.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.label_intro_convert_type_18.setWordWrap(True)
self.label_intro_convert_type_18.setObjectName("label_intro_convert_type_18")
self.box_optimise = QtWidgets.QCheckBox(parent=self.frame_button_hold)
self.box_optimise.setGeometry(QtCore.QRect(260, 450, 221, 20))
font = QtGui.QFont()
font.setBold(True)
self.box_optimise.setFont(font)
self.box_optimise.setChecked(True)
self.box_optimise.setTristate(False)
self.box_optimise.setObjectName("box_optimise")
self.spn_save_quality = QtWidgets.QSpinBox(parent=self.frame_button_hold)
self.spn_save_quality.setGeometry(QtCore.QRect(350, 480, 101, 22))
self.spn_save_quality.setMinimum(1)
self.spn_save_quality.setMaximum(91)
self.spn_save_quality.setProperty("value", 82)
self.spn_save_quality.setObjectName("spn_save_quality")
self.lbl_txt_detail = QtWidgets.QLabel(parent=self.frame_button_hold)
self.lbl_txt_detail.setGeometry(QtCore.QRect(80, 480, 251, 20))
self.lbl_txt_detail.setObjectName("lbl_txt_detail")
self.frame.raise_()
self.label_intro_convert_type.raise_()
self.combo_file_types.raise_()
self.label_Step_1.raise_()
self.label_Step_2.raise_()
self.label_intro_convert_type_2.raise_()
self.label_Step_3.raise_()
self.label_intro_convert_type_6.raise_()
self.button_convert_loaded.raise_()
self.comboBox_file_size_unit.raise_()
self.label_intro_convert_type_18.raise_()
self.box_optimise.raise_()
self.spn_save_quality.raise_()
self.lbl_txt_detail.raise_()
self.tabs_functions.addTab(self.tab, "")
###############################################################
##this is tab 2 - rescale
#####################
self.tab_2 = QtWidgets.QWidget()
self.tab_2.setObjectName("tab_2")
self.frame_button_hold_2 = QtWidgets.QFrame(parent=self.tab_2)
self.frame_button_hold_2.setGeometry(QtCore.QRect(0, 0, 491, 541))
self.frame_button_hold_2.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame_button_hold_2.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
self.frame_button_hold_2.setLineWidth(5)
self.frame_button_hold_2.setMidLineWidth(7)
self.frame_button_hold_2.setObjectName("frame_button_hold_2")
self.label_image_stats_title = QtWidgets.QLabel(parent=self.frame_button_hold_2)
self.label_image_stats_title.setGeometry(QtCore.QRect(20, 20, 251, 16))
font = QtGui.QFont()
font.setBold(True)
font.setStrikeOut(False)
font.setKerning(True)
self.label_image_stats_title.setFont(font)
self.label_image_stats_title.setWordWrap(True)
self.label_image_stats_title.setObjectName("label_image_stats_title")
self.tabs_rescale_function = QtWidgets.QTabWidget(parent=self.frame_button_hold_2)
self.tabs_rescale_function.setGeometry(QtCore.QRect(20, 120, 451, 201))
self.tabs_rescale_function.setTabShape(QtWidgets.QTabWidget.TabShape.Triangular)
self.tabs_rescale_function.setDocumentMode(False)
self.tabs_rescale_function.setObjectName("tabs_rescale_function")
self.set_scale_tab = QtWidgets.QWidget()
self.set_scale_tab.setObjectName("set_scale_tab")
self.combo_resolution_dropdown = QtWidgets.QComboBox(parent=self.set_scale_tab)
self.combo_resolution_dropdown.setGeometry(QtCore.QRect(20, 40, 161, 21))
self.combo_resolution_dropdown.setObjectName("combo_resolution_dropdown")
self.combo_resolution_dropdown.addItems(dropdown_resolutions_pick_view)
self.combo_resolution_dropdown.setCurrentIndex(2)
self.label_det_5 = QtWidgets.QLabel(parent=self.set_scale_tab)
self.label_det_5.setGeometry(QtCore.QRect(200, 20, 221, 141))
font = QtGui.QFont()
font.setBold(True)
font.setStrikeOut(False)
font.setKerning(True)
self.label_det_5.setFont(font)
self.label_det_5.setFrameShape(QtWidgets.QFrame.Shape.Box)
self.label_det_5.setWordWrap(True)
self.label_det_5.setObjectName("label_det_5")
self.label_4 = QtWidgets.QLabel(parent=self.set_scale_tab)
self.label_4.setGeometry(QtCore.QRect(20, 10, 161, 20))
font = QtGui.QFont()
font.setBold(True)
self.label_4.setFont(font)
self.label_4.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.label_4.setObjectName("label_4")
self.tabs_rescale_function.addTab(self.set_scale_tab, "")
self.percent_tab = QtWidgets.QWidget()
self.percent_tab.setObjectName("percent_tab")
self.label_det_7 = QtWidgets.QLabel(parent=self.percent_tab)
self.label_det_7.setGeometry(QtCore.QRect(200, 20, 221, 141))
font = QtGui.QFont()
font.setBold(True)
font.setStrikeOut(False)
font.setKerning(True)
self.label_det_7.setFont(font)
self.label_det_7.setFrameShape(QtWidgets.QFrame.Shape.Box)
self.label_det_7.setWordWrap(True)
self.label_det_7.setObjectName("label_det_7")
self.spinBox_rescale_percentage = QtWidgets.QSpinBox(parent=self.percent_tab)
self.spinBox_rescale_percentage.setGeometry(QtCore.QRect(100, 20, 81, 22))
self.spinBox_rescale_percentage.setMinimum(1)
self.spinBox_rescale_percentage.setProperty("value", 50)
self.spinBox_rescale_percentage.setObjectName("spinBox_rescale_percentage")
self.checkBox_apply_to_width = QtWidgets.QCheckBox(parent=self.percent_tab)
self.checkBox_apply_to_width.setGeometry(QtCore.QRect(20, 100, 111, 20))
self.checkBox_apply_to_width.setChecked(True)
self.checkBox_apply_to_width.setObjectName("checkBox_apply_to_width")
self.checkBox_apply_to_height = QtWidgets.QCheckBox(parent=self.percent_tab)
self.checkBox_apply_to_height.setGeometry(QtCore.QRect(20, 130, 111, 20))
self.checkBox_apply_to_height.setChecked(True)
self.checkBox_apply_to_height.setObjectName("checkBox_apply_to_height")
self.label = QtWidgets.QLabel(parent=self.percent_tab)
self.label.setGeometry(QtCore.QRect(20, 20, 81, 21))
font = QtGui.QFont()
font.setBold(True)
self.label.setFont(font)
self.label.setObjectName("label")
self.combo_scale_up_or_down = QtWidgets.QComboBox(parent=self.percent_tab)
self.combo_scale_up_or_down.setGeometry(QtCore.QRect(20, 60, 161, 22))
self.combo_scale_up_or_down.setObjectName("combo_scale_up_or_down")
self.combo_scale_up_or_down.addItems(dropdown_scale)
self.combo_scale_up_or_down.setCurrentIndex(0)
###############################################################
##this is more rescaling stuff for the inner tab options
#####################
self.tabs_rescale_function.addTab(self.percent_tab, "")
self.tab_3 = QtWidgets.QWidget()
self.tab_3.setObjectName("tab_3")
self.label_det_9 = QtWidgets.QLabel(parent=self.tab_3)
self.label_det_9.setGeometry(QtCore.QRect(220, 20, 201, 141))
font = QtGui.QFont()
font.setBold(True)
font.setStrikeOut(False)
font.setKerning(True)
self.label_det_9.setFont(font)
self.label_det_9.setFrameShape(QtWidgets.QFrame.Shape.Box)
self.label_det_9.setWordWrap(True)
self.label_det_9.setObjectName("label_det_9")
self.label_reuse_scale_option_text = QtWidgets.QLabel(parent=self.tab_3)
self.label_reuse_scale_option_text.setGeometry(QtCore.QRect(10, 20, 201, 141))
font = QtGui.QFont()
font.setBold(True)
font.setStrikeOut(False)
font.setKerning(True)
self.label_reuse_scale_option_text.setFont(font)
self.label_reuse_scale_option_text.setStyleSheet("color: rgb(255, 0, 13);")
self.label_reuse_scale_option_text.setFrameShape(QtWidgets.QFrame.Shape.NoFrame)
self.label_reuse_scale_option_text.setWordWrap(True)
self.label_reuse_scale_option_text.setObjectName("label_reuse_scale_option_text")
self.tabs_rescale_function.addTab(self.tab_3, "")
self.Custom_Tab = QtWidgets.QWidget()
self.Custom_Tab.setObjectName("Custom_Tab")
self.label_det_8 = QtWidgets.QLabel(parent=self.Custom_Tab)
self.label_det_8.setGeometry(QtCore.QRect(200, 20, 221, 141))
font = QtGui.QFont()
font.setBold(True)
font.setStrikeOut(False)
font.setKerning(True)
self.label_det_8.setFont(font)
self.label_det_8.setFrameShape(QtWidgets.QFrame.Shape.Box)
self.label_det_8.setWordWrap(True)
self.label_det_8.setObjectName("label_det_8")
self.spin_width_custom = QtWidgets.QSpinBox(parent=self.Custom_Tab)
self.spin_width_custom.setGeometry(QtCore.QRect(90, 40, 101, 22))
self.spin_width_custom.setObjectName("spin_width_custom")
self.spin_width_custom.setMaximum(2147483647)
self.spin_width_custom.setMinimum(1)
self.spin_height_custom = QtWidgets.QSpinBox(parent=self.Custom_Tab)
self.spin_height_custom.setGeometry(QtCore.QRect(90, 80, 101, 22))
self.spin_height_custom.setObjectName("spin_height_custom")
self.label_2 = QtWidgets.QLabel(parent=self.Custom_Tab)
self.label_2.setGeometry(QtCore.QRect(20, 40, 61, 21))
self.spin_height_custom.setMaximum(2147483647)
self.spin_height_custom.setMinimum(1)
font = QtGui.QFont()
font.setBold(True)
self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.label_3 = QtWidgets.QLabel(parent=self.Custom_Tab)
self.label_3.setGeometry(QtCore.QRect(20, 80, 61, 21))
font = QtGui.QFont()
font.setBold(True)
self.label_3.setFont(font)
self.label_3.setObjectName("label_3")
self.button_autofill_custom_data = QtWidgets.QPushButton(parent=self.Custom_Tab)
self.button_autofill_custom_data.setGeometry(QtCore.QRect(20, 130, 161, 24))
self.button_autofill_custom_data.setObjectName("button_autofill_custom_data")
self.button_autofill_custom_data.clicked.connect(self.fill_scale_info)
self.tabs_rescale_function.addTab(self.Custom_Tab, "")
self.label_image_file_type_rescaler = QtWidgets.QLabel(parent=self.frame_button_hold_2)
self.label_image_file_type_rescaler.setGeometry(QtCore.QRect(50, 40, 251, 16))
font = QtGui.QFont()
font.setBold(False)
font.setStrikeOut(False)
font.setKerning(True)
self.label_image_file_type_rescaler.setFont(font)
self.label_image_file_type_rescaler.setWordWrap(True)
self.label_image_file_type_rescaler.setObjectName("label_image_file_type_rescaler")
self.label_current_resolution_rescaler = QtWidgets.QLabel(parent=self.frame_button_hold_2)
self.label_current_resolution_rescaler.setGeometry(QtCore.QRect(50, 60, 251, 16))
font = QtGui.QFont()
font.setBold(False)
font.setStrikeOut(False)
font.setKerning(True)
self.label_current_resolution_rescaler.setFont(font)
self.label_current_resolution_rescaler.setWordWrap(True)
self.label_current_resolution_rescaler.setObjectName("label_current_resolution_rescaler")
self.label_det_4 = QtWidgets.QLabel(parent=self.frame_button_hold_2)
self.label_det_4.setGeometry(QtCore.QRect(120, 90, 251, 21))
font = QtGui.QFont()
font.setBold(True)
font.setStrikeOut(False)
font.setKerning(True)
self.label_det_4.setFont(font)
self.label_det_4.setFrameShape(QtWidgets.QFrame.Shape.Box)
self.label_det_4.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
self.label_det_4.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.label_det_4.setWordWrap(True)
self.label_det_4.setObjectName("label_det_4")
self.label_det_4.setStyleSheet("background-color: rgb(255, 80, 83)")
self.label_det_6 = QtWidgets.QLabel(parent=self.frame_button_hold_2)
self.label_det_6.setGeometry(QtCore.QRect(20, 340, 451, 41))
font = QtGui.QFont()
font.setBold(True)
font.setStrikeOut(False)
font.setKerning(True)
self.label_det_6.setFont(font)
self.label_det_6.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.label_det_6.setWordWrap(True)
self.label_det_6.setObjectName("label_det_6")
self.checkBox_overwrite_rescale = QtWidgets.QCheckBox(parent=self.frame_button_hold_2)
self.checkBox_overwrite_rescale.setGeometry(QtCore.QRect(30, 390, 251, 20))
font = QtGui.QFont()
font.setItalic(True)
self.checkBox_overwrite_rescale.setFont(font)
self.checkBox_overwrite_rescale.setObjectName("checkBox_overwrite_rescale")
self.button_rescale_images = QtWidgets.QPushButton(parent=self.frame_button_hold_2)
self.button_rescale_images.setGeometry(QtCore.QRect(20, 450, 451, 61))
font = QtGui.QFont()
font.setBold(True)
self.button_rescale_images.setFont(font)
self.button_rescale_images.setStyleSheet("background-color: rgb(255, 0, 153)")
self.button_rescale_images.setObjectName("button_rescale_images")
self.tabs_functions.addTab(self.tab_2, "")
self.button_rescale_images.clicked.connect(self.rescale_func)
############################the splitter and combiner####################################
self.tab_splitter_combiner = QtWidgets.QWidget()
self.tab_splitter_combiner.setObjectName("tab_splitter_combiner")
self.frame_5 = QtWidgets.QFrame(parent=self.tab_splitter_combiner)
self.frame_5.setGeometry(QtCore.QRect(20, 30, 151, 201))
self.frame_5.setStyleSheet("background-color: rgb(255, 0, 4);")
self.frame_5.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame_5.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
self.frame_5.setObjectName("frame_5")
self.channel_thumb_combiner_red = QtWidgets.QLabel(parent=self.frame_5)
self.channel_thumb_combiner_red.setGeometry(QtCore.QRect(10, 10, 131, 131))
font = QtGui.QFont()
font.setPointSize(1)
font.setBold(False)
self.channel_thumb_combiner_red.setFont(font)
self.channel_thumb_combiner_red.setAutoFillBackground(False)
self.channel_thumb_combiner_red.setText("")
self.channel_thumb_combiner_red.setPixmap(QtGui.QPixmap(default_picture))
self.channel_thumb_combiner_red.setScaledContents(True)
self.channel_thumb_combiner_red.setObjectName("channel_thumb_combiner_red")
self.button_load_red_channel = QtWidgets.QPushButton(parent=self.frame_5)
self.button_load_red_channel.setGeometry(QtCore.QRect(10, 150, 131, 21))
self.button_load_red_channel.setStyleSheet("background-color: rgb(18, 21, 19);\n"
"color: rgb(255, 255, 255);")
self.button_load_red_channel.setObjectName("button_load_red_channel")
self.button_load_red_channel.clicked.connect(lambda: self.combine_load_images(color_image="Red",clear_mode="Load"))
self.button_clear_red_channel = QtWidgets.QPushButton(parent=self.frame_5)
self.button_clear_red_channel.setGeometry(QtCore.QRect(10, 180, 131, 20))
self.button_clear_red_channel.setStyleSheet("background-color: rgb(222, 222, 222);")
self.button_clear_red_channel.setObjectName("button_clear_red_channel")
self.button_clear_red_channel.clicked.connect(lambda: self.combine_load_images(color_image="Red",clear_mode="Clear"))
self.frame_6 = QtWidgets.QFrame(parent=self.tab_splitter_combiner)
self.frame_6.setGeometry(QtCore.QRect(190, 30, 151, 201))
self.frame_6.setStyleSheet("background-color: rgb(0, 168, 53)")
self.frame_6.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame_6.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
self.frame_6.setObjectName("frame_6")
self.channel_thumb_combiner_green = QtWidgets.QLabel(parent=self.frame_6)
self.channel_thumb_combiner_green.setGeometry(QtCore.QRect(10, 10, 131, 131))
font = QtGui.QFont()
font.setPointSize(1)
font.setBold(False)
self.channel_thumb_combiner_green.setFont(font)
self.channel_thumb_combiner_green.setAutoFillBackground(False)
self.channel_thumb_combiner_green.setText("")
self.channel_thumb_combiner_green.setPixmap(QtGui.QPixmap(default_picture))
self.channel_thumb_combiner_green.setScaledContents(True)
self.channel_thumb_combiner_green.setObjectName("channel_thumb_combiner_green")
self.button_load_green_channel = QtWidgets.QPushButton(parent=self.frame_6)
self.button_load_green_channel.setGeometry(QtCore.QRect(10, 150, 131, 21))
self.button_load_green_channel.setStyleSheet("background-color: rgb(18, 21, 19);\n"
"color: rgb(255, 255, 255);")
self.button_load_green_channel.clicked.connect(lambda: self.combine_load_images(color_image="Green",clear_mode="Load"))
self.button_load_green_channel.setObjectName("button_load_green_channel")
self.button_clear_green_channel = QtWidgets.QPushButton(parent=self.frame_6)
self.button_clear_green_channel.setGeometry(QtCore.QRect(10, 180, 131, 20))
self.button_clear_green_channel.setStyleSheet("background-color: rgb(222, 222, 222);")
self.button_clear_green_channel.setObjectName("button_clear_green_channel")
self.button_clear_green_channel.clicked.connect(lambda: self.combine_load_images(color_image="Green",clear_mode="Clear"))
self.frame_8 = QtWidgets.QFrame(parent=self.tab_splitter_combiner)
self.frame_8.setGeometry(QtCore.QRect(350, 30, 151, 201))
self.frame_8.setStyleSheet("background-color: rgb(0, 148, 240)")
self.frame_8.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame_8.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
self.frame_8.setObjectName("frame_8")
self.channel_thumb_combiner_blue = QtWidgets.QLabel(parent=self.frame_8)
self.channel_thumb_combiner_blue.setGeometry(QtCore.QRect(10, 10, 131, 131))
font = QtGui.QFont()
font.setPointSize(1)
font.setBold(False)
self.channel_thumb_combiner_blue.setFont(font)
self.channel_thumb_combiner_blue.setAutoFillBackground(False)
self.channel_thumb_combiner_blue.setText("")
self.channel_thumb_combiner_blue.setPixmap(QtGui.QPixmap(default_picture))
self.channel_thumb_combiner_blue.setScaledContents(True)
self.channel_thumb_combiner_blue.setObjectName("channel_thumb_combiner_blue")
self.button_load_blue_channel = QtWidgets.QPushButton(parent=self.frame_8)
self.button_load_blue_channel.setGeometry(QtCore.QRect(10, 150, 131, 21))
self.button_load_blue_channel.setStyleSheet("background-color: rgb(18, 21, 19);\n"
"color: rgb(255, 255, 255);")
self.button_load_blue_channel.setObjectName("button_load_blue_channel")
self.button_load_blue_channel.clicked.connect(lambda: self.combine_load_images(color_image="Blue",clear_mode="Load"))
self.button_clear_blue_channel = QtWidgets.QPushButton(parent=self.frame_8)
self.button_clear_blue_channel.setGeometry(QtCore.QRect(10, 180, 131, 20))
self.button_clear_blue_channel.setStyleSheet("background-color: rgb(222, 222, 222);")
self.button_clear_blue_channel.setObjectName("button_clear_blue_channel")
self.button_clear_blue_channel.clicked.connect(lambda: self.combine_load_images(color_image="Blue",clear_mode="Clear"))
self.frame_9 = QtWidgets.QFrame(parent=self.tab_splitter_combiner)
self.frame_9.setGeometry(QtCore.QRect(20, 240, 151, 201))
self.frame_9.setStyleSheet("background-color: rgb(57, 57, 57)")
self.frame_9.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame_9.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
self.frame_9.setObjectName("frame_9")
self.channel_thumb_combiner_alpha = QtWidgets.QLabel(parent=self.frame_9)
self.channel_thumb_combiner_alpha.setGeometry(QtCore.QRect(10, 10, 131, 131))
font = QtGui.QFont()
font.setPointSize(1)
font.setBold(False)
self.channel_thumb_combiner_alpha.setFont(font)
self.channel_thumb_combiner_alpha.setAutoFillBackground(False)
self.channel_thumb_combiner_alpha.setText("")
self.channel_thumb_combiner_alpha.setPixmap(QtGui.QPixmap(default_picture))
self.channel_thumb_combiner_alpha.setScaledContents(True)
self.channel_thumb_combiner_alpha.setObjectName("channel_thumb_combiner_alpha")
self.button_load_alpha_channel = QtWidgets.QPushButton(parent=self.frame_9)
self.button_load_alpha_channel.setGeometry(QtCore.QRect(10, 150, 131, 21))
self.button_load_alpha_channel.setStyleSheet("background-color: rgb(18, 21, 19);\n"
"color: rgb(255, 255, 255);")
self.button_load_alpha_channel.setObjectName("button_load_alpha_channel")
self.button_load_alpha_channel.clicked.connect(lambda: self.combine_load_images(color_image="Alpha",clear_mode="Load"))
self.button_clear_alpha_channel = QtWidgets.QPushButton(parent=self.frame_9)
self.button_clear_alpha_channel.setGeometry(QtCore.QRect(10, 180, 131, 20))
self.button_clear_alpha_channel.setStyleSheet("background-color: rgb(222, 222, 222);")
self.button_clear_alpha_channel.setObjectName("button_clear_alpha_channel")
self.button_clear_alpha_channel.clicked.connect(lambda: self.combine_load_images(color_image="Alpha",clear_mode="Clear"))
self.label_9 = QtWidgets.QLabel(parent=self.tab_splitter_combiner)
self.label_9.setGeometry(QtCore.QRect(200, 270, 301, 71))
self.label_9.setWordWrap(True)
self.label_9.setObjectName("label_9")
self.label_10 = QtWidgets.QLabel(parent=self.tab_splitter_combiner)
self.label_10.setGeometry(QtCore.QRect(190, 250, 311, 21))
font = QtGui.QFont()
font.setPointSize(12)
font.setBold(True)
self.label_10.setFont(font)
self.label_10.setObjectName("label_10")
self.combobox_save_files_combiner = QtWidgets.QComboBox(parent=self.tab_splitter_combiner)
self.combobox_save_files_combiner.setGeometry(QtCore.QRect(210, 390, 121, 22))
self.combobox_save_files_combiner.setObjectName("combobox_save_files_combiner")
self.combobox_save_files_combiner.addItems(dropdown_options)
self.combobox_save_files_combiner.setCurrentIndex(2)
self.label_11 = QtWidgets.QLabel(parent=self.tab_splitter_combiner)
self.label_11.setGeometry(QtCore.QRect(190, 370, 161, 16))
font = QtGui.QFont()
font.setBold(True)
self.label_11.setFont(font)
self.label_11.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.label_11.setObjectName("label_11")
self.button_combine_final = QtWidgets.QPushButton(parent=self.tab_splitter_combiner)
self.button_combine_final.setGeometry(QtCore.QRect(40, 510, 451, 61))
font = QtGui.QFont()
font.setPointSize(13)
font.setBold(True)
font.setUnderline(True)
self.button_combine_final.setFont(font)
self.button_combine_final.setStyleSheet("background-color:rgb(157, 0, 255);\n"
"color: rgb(255, 255, 255);")
self.button_combine_final.setObjectName("button_combine_final")
self.button_combine_final.clicked.connect(self.final_file_combiner)
self.line = QtWidgets.QFrame(parent=self.tab_splitter_combiner)
self.line.setGeometry(QtCore.QRect(190, 350, 321, 16))
self.line.setFrameShape(QtWidgets.QFrame.Shape.HLine)
self.line.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
self.line.setObjectName("line")
self.line_3 = QtWidgets.QFrame(parent=self.tab_splitter_combiner)
self.line_3.setGeometry(QtCore.QRect(10, 470, 501, 16))
self.line_3.setFrameShape(QtWidgets.QFrame.Shape.HLine)
self.line_3.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
self.line_3.setObjectName("line_3")
self.spin_combiner_export_width = QtWidgets.QSpinBox(parent=self.tab_splitter_combiner)
self.spin_combiner_export_width.setGeometry(QtCore.QRect(350, 390, 71, 22))
self.spin_combiner_export_width.setMinimum(1)
self.spin_combiner_export_width.setMaximum(2000000000)
self.spin_combiner_export_width.setProperty("value", 1024)
self.spin_combiner_export_width.setObjectName("spin_combiner_export_width")
self.label_expor_size_combiner = QtWidgets.QLabel(parent=self.tab_splitter_combiner)
self.label_expor_size_combiner.setGeometry(QtCore.QRect(340, 370, 161, 16))
font = QtGui.QFont()
font.setBold(True)
self.label_expor_size_combiner.setFont(font)
self.label_expor_size_combiner.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.label_expor_size_combiner.setObjectName("label_expor_size_combiner")
self.spin_combiner_export_height = QtWidgets.QSpinBox(parent=self.tab_splitter_combiner)
self.spin_combiner_export_height.setGeometry(QtCore.QRect(430, 390, 71, 22))
self.spin_combiner_export_height.setMinimum(1)
self.spin_combiner_export_height.setMaximum(2000000000)
self.spin_combiner_export_height.setProperty("value", 1024)
self.spin_combiner_export_height.setObjectName("spin_combiner_export_height")
self.frame_5.raise_()
self.frame_6.raise_()
self.frame_8.raise_()
self.frame_9.raise_()
self.label_9.raise_()
self.label_10.raise_()
self.combobox_save_files_combiner.raise_()
self.label_11.raise_()
self.button_combine_final.raise_()
self.line.raise_()
self.line_3.raise_()
self.spin_combiner_export_width.raise_()
self.label_expor_size_combiner.raise_()
self.spin_combiner_export_height.raise_()
self.label_inform_save_combiner = QtWidgets.QLabel(parent=self.tab_splitter_combiner)
self.label_inform_save_combiner.setGeometry(QtCore.QRect(350, 420, 111, 20))
font = QtGui.QFont()
font.setBold(True)
self.label_inform_save_combiner.setFont(font)
self.label_inform_save_combiner.setObjectName("label_inform_save_combiner")
self.label_save_loc_show_combiner = QtWidgets.QLabel(parent=self.tab_splitter_combiner)
self.label_save_loc_show_combiner.setGeometry(QtCore.QRect(280, 440, 221, 20))
self.label_save_loc_show_combiner.setFrameShape(QtWidgets.QFrame.Shape.Box)
self.label_save_loc_show_combiner.setObjectName("label_save_loc_show_combiner")
self.label_save_loc_show_combiner.setAlignment((QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTop))
self.button_set_save_location_combiner = QtWidgets.QPushButton(parent=self.tab_splitter_combiner)
self.button_set_save_location_combiner.setGeometry(QtCore.QRect(180, 420, 91, 51))
font = QtGui.QFont()
font.setBold(True)
font.setItalic(False)
font.setUnderline(True)
self.button_set_save_location_combiner.setFont(font)
self.button_set_save_location_combiner.setStyleSheet("background-color: rgb(255, 0, 17);")
self.button_set_save_location_combiner.setObjectName("button_set_save_location_combiner")
self.button_set_save_location_combiner.clicked.connect(self.setting_save_loc_both)
###############################################################
##this splitter tab
#####################
self.frame_5.raise_()
self.frame_6.raise_()
self.frame_8.raise_()
self.frame_9.raise_()
self.label_9.raise_()
self.label_10.raise_()
self.combobox_save_files_combiner.raise_()
self.label_11.raise_()
self.button_combine_final.raise_()
self.line.raise_()
self.line_3.raise_()
self.tabs_functions.addTab(self.tab_splitter_combiner, "")
self.tab_4 = QtWidgets.QWidget()
self.tab_4.setObjectName("tab_4")
self.button_split_channels = QtWidgets.QPushButton(parent=self.tab_4)
self.button_split_channels.setGeometry(QtCore.QRect(40, 490, 451, 41))
font = QtGui.QFont()
font.setPointSize(13)
font.setBold(True)
font.setUnderline(True)
self.button_split_channels.setFont(font)
self.button_split_channels.setStyleSheet("background-color:rgb(44, 139, 255);")
self.button_split_channels.setObjectName("button_split_channels")
self.button_split_channels.clicked.connect(self.splitting_maps)
self.frame_10 = QtWidgets.QFrame(parent=self.tab_4)
self.frame_10.setGeometry(QtCore.QRect(350, 30, 151, 201))
self.frame_10.setStyleSheet("background-color: rgb(0, 148, 240)")
self.frame_10.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame_10.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
self.frame_10.setObjectName("frame_10")
self.channel_thumb_splitter_blue = QtWidgets.QLabel(parent=self.frame_10)
self.channel_thumb_splitter_blue.setGeometry(QtCore.QRect(10, 10, 131, 131))
font = QtGui.QFont()
font.setPointSize(1)
font.setBold(False)
self.channel_thumb_splitter_blue.setFont(font)
self.channel_thumb_splitter_blue.setAutoFillBackground(False)
self.channel_thumb_splitter_blue.setText("")
self.channel_thumb_splitter_blue.setPixmap(QtGui.QPixmap(default_picture))
self.channel_thumb_splitter_blue.setScaledContents(True)
self.channel_thumb_splitter_blue.setObjectName("channel_thumb_splitter_blue")
self.chbox_blue_channel = QtWidgets.QCheckBox(parent=self.frame_10)
self.chbox_blue_channel.setGeometry(QtCore.QRect(10, 150, 131, 41))
font = QtGui.QFont()
font.setBold(True)
self.chbox_blue_channel.setFont(font)
self.chbox_blue_channel.setObjectName("chbox_blue_channel")
self.label_12 = QtWidgets.QLabel(parent=self.tab_4)
self.label_12.setGeometry(QtCore.QRect(190, 370, 161, 16))
font = QtGui.QFont()
font.setBold(True)
self.label_12.setFont(font)
self.label_12.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.label_12.setObjectName("label_12")
self.label_13 = QtWidgets.QLabel(parent=self.tab_4)
self.label_13.setGeometry(QtCore.QRect(200, 270, 301, 71))
self.label_13.setWordWrap(True)
self.label_13.setObjectName("label_13")
self.label_14 = QtWidgets.QLabel(parent=self.tab_4)
self.label_14.setGeometry(QtCore.QRect(190, 250, 311, 21))
font = QtGui.QFont()
font.setPointSize(12)
font.setBold(True)
self.label_14.setFont(font)
self.label_14.setObjectName("label_14")
self.frame_11 = QtWidgets.QFrame(parent=self.tab_4)
self.frame_11.setGeometry(QtCore.QRect(190, 30, 151, 201))
self.frame_11.setStyleSheet("background-color: rgb(0, 168, 53)")
self.frame_11.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame_11.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
self.frame_11.setObjectName("frame_11")
self.channel_thumb_splitter_green = QtWidgets.QLabel(parent=self.frame_11)
self.channel_thumb_splitter_green.setGeometry(QtCore.QRect(10, 10, 131, 131))
font = QtGui.QFont()
font.setPointSize(1)
font.setBold(False)
self.channel_thumb_splitter_green.setFont(font)
self.channel_thumb_splitter_green.setAutoFillBackground(False)
self.channel_thumb_splitter_green.setText("")
self.channel_thumb_splitter_green.setPixmap(QtGui.QPixmap(default_picture))
self.channel_thumb_splitter_green.setScaledContents(True)
self.channel_thumb_splitter_green.setObjectName("channel_thumb_splitter_green")
self.chbox_green_channel = QtWidgets.QCheckBox(parent=self.frame_11)
self.chbox_green_channel.setGeometry(QtCore.QRect(10, 150, 131, 41))
font = QtGui.QFont()
font.setBold(True)
self.chbox_green_channel.setFont(font)
self.chbox_green_channel.setObjectName("chbox_green_channel")
self.frame_12 = QtWidgets.QFrame(parent=self.tab_4)
self.frame_12.setGeometry(QtCore.QRect(20, 30, 151, 201))
self.frame_12.setStyleSheet("background-color: rgb(255, 0, 4);")
self.frame_12.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame_12.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
self.frame_12.setObjectName("frame_12")
self.channel_thumb_splitter_red = QtWidgets.QLabel(parent=self.frame_12)
self.channel_thumb_splitter_red.setGeometry(QtCore.QRect(10, 10, 131, 131))
font = QtGui.QFont()
font.setPointSize(1)
font.setBold(False)
self.channel_thumb_splitter_red.setFont(font)
self.channel_thumb_splitter_red.setAutoFillBackground(False)
self.channel_thumb_splitter_red.setText("")
self.channel_thumb_splitter_red.setPixmap(QtGui.QPixmap(default_picture))
self.channel_thumb_splitter_red.setScaledContents(True)
self.channel_thumb_splitter_red.setObjectName("channel_thumb_splitter_red")
self.chbox_red_channel = QtWidgets.QCheckBox(parent=self.frame_12)
self.chbox_red_channel.setGeometry(QtCore.QRect(10, 150, 131, 41))
font = QtGui.QFont()
font.setBold(True)
self.chbox_red_channel.setFont(font)
self.chbox_red_channel.setObjectName("chbox_red_channel")
self.combobox_save_files_splitter = QtWidgets.QComboBox(parent=self.tab_4)
self.combobox_save_files_splitter.setGeometry(QtCore.QRect(210, 390, 121, 22))
self.combobox_save_files_splitter.setObjectName("combobox_save_files_splitter")
self.combobox_save_files_splitter.addItems(dropdown_options)
self.combobox_save_files_splitter.setCurrentIndex(2)
self.frame_13 = QtWidgets.QFrame(parent=self.tab_4)
self.frame_13.setGeometry(QtCore.QRect(20, 240, 151, 201))
self.frame_13.setStyleSheet("background-color: rgb(57, 57, 57)")
self.frame_13.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame_13.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
self.frame_13.setObjectName("frame_13")
self.channel_thumb_splitter_alpha = QtWidgets.QLabel(parent=self.frame_13)
self.channel_thumb_splitter_alpha.setGeometry(QtCore.QRect(10, 10, 131, 131))
font = QtGui.QFont()
font.setPointSize(1)
font.setBold(False)
self.channel_thumb_splitter_alpha.setFont(font)
self.channel_thumb_splitter_alpha.setAutoFillBackground(False)
self.channel_thumb_splitter_alpha.setText("")
self.channel_thumb_splitter_alpha.setPixmap(QtGui.QPixmap(default_picture))
self.channel_thumb_splitter_alpha.setScaledContents(True)
self.channel_thumb_splitter_alpha.setObjectName("channel_thumb_splitter_alpha")
self.chbox_alpha_channel = QtWidgets.QCheckBox(parent=self.frame_13)
self.chbox_alpha_channel.setGeometry(QtCore.QRect(10, 150, 131, 41))
font = QtGui.QFont()
font.setBold(True)
self.chbox_alpha_channel.setFont(font)
self.chbox_alpha_channel.setStyleSheet("color: rgb(255, 255, 255);")
self.chbox_alpha_channel.setObjectName("chbox_alpha_channel")
self.line_4 = QtWidgets.QFrame(parent=self.tab_4)
self.line_4.setGeometry(QtCore.QRect(10, 470, 501, 16))
self.line_4.setFrameShape(QtWidgets.QFrame.Shape.HLine)
self.line_4.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
self.line_4.setObjectName("line_4")
self.line_2 = QtWidgets.QFrame(parent=self.tab_4)
self.line_2.setGeometry(QtCore.QRect(190, 350, 321, 16))
self.line_2.setFrameShape(QtWidgets.QFrame.Shape.HLine)
self.line_2.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
self.line_2.setObjectName("line_2")
self.button_clear_images_splitter = QtWidgets.QPushButton(parent=self.tab_4)
self.button_clear_images_splitter.setGeometry(QtCore.QRect(40, 540, 451, 41))
font = QtGui.QFont()
font.setPointSize(13)
font.setBold(True)
font.setUnderline(True)
self.button_clear_images_splitter.setFont(font)
self.button_clear_images_splitter.setStyleSheet("background-color: rgb(255, 0, 4);")
self.button_clear_images_splitter.setObjectName("button_clear_images_splitter")
self.button_clear_images_splitter.clicked.connect(lambda: self.clear_thumbnails(clear_mode="All"))
self.tabs_functions.addTab(self.tab_4, "")
self.spin_splitter_export_width = QtWidgets.QSpinBox(parent=self.tab_4)
self.spin_splitter_export_width.setGeometry(QtCore.QRect(350, 390, 71, 22))
self.spin_splitter_export_width.setMinimum(1)
self.spin_splitter_export_width.setMaximum(2000000000)
self.spin_splitter_export_width.setProperty("value", 1024)
self.spin_splitter_export_width.setObjectName("spin_splitter_export_width")
self.spin_splitter_export_height = QtWidgets.QSpinBox(parent=self.tab_4)
self.spin_splitter_export_height.setGeometry(QtCore.QRect(430, 390, 71, 22))
self.spin_splitter_export_height.setMinimum(1)
self.spin_splitter_export_height.setMaximum(2000000000)
self.spin_splitter_export_height.setProperty("value", 1024)
self.spin_splitter_export_height.setObjectName("spin_splitter_export_height")
self.label_expor_size_splitter = QtWidgets.QLabel(parent=self.tab_4)
self.label_expor_size_splitter.setGeometry(QtCore.QRect(340, 370, 161, 16))
font = QtGui.QFont()
font.setBold(True)
self.label_expor_size_splitter.setFont(font)
self.label_expor_size_splitter.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.label_expor_size_splitter.setObjectName("label_expor_size_splitter")
self.chbox_red_channel.setChecked(True)
self.chbox_blue_channel.setChecked(True)
self.chbox_green_channel.setChecked(True)
self.label_save_loc_show_splitter = QtWidgets.QLabel(parent=self.tab_4)
self.label_save_loc_show_splitter.setGeometry(QtCore.QRect(280, 440, 221, 20))
self.label_save_loc_show_splitter.setFrameShape(QtWidgets.QFrame.Shape.Box)
self.label_save_loc_show_splitter.setObjectName("label_save_loc_show_splitter")
self.label_save_loc_show_splitter.setAlignment((QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTop))
self.button_set_save_location_splitter = QtWidgets.QPushButton(parent=self.tab_4)
self.button_set_save_location_splitter.setGeometry(QtCore.QRect(180, 420, 91, 51))
font = QtGui.QFont()
font.setBold(True)
font.setItalic(False)
font.setUnderline(True)
self.button_set_save_location_splitter.setFont(font)
self.button_set_save_location_splitter.setStyleSheet("background-color: rgb(255, 0, 17);")
self.button_set_save_location_splitter.setObjectName("button_set_save_location_splitter")
self.button_set_save_location_splitter.clicked.connect(self.setting_save_loc_both)
self.label_inform_save_splitter = QtWidgets.QLabel(parent=self.tab_4)
self.label_inform_save_splitter.setGeometry(QtCore.QRect(350, 420, 111, 20))
font = QtGui.QFont()
font.setBold(True)
self.label_inform_save_splitter.setFont(font)
self.label_inform_save_splitter.setObjectName("label_inform_save_splitter")
###############################################################
##this is tab for general buttons to select
#####################
self.lbl_thumb_counter = QtWidgets.QLabel(parent=self.centralwidget)
self.lbl_thumb_counter.setGeometry(QtCore.QRect(120, 550, 91, 21))
font = QtGui.QFont()
font.setBold(False)
font.setItalic(True)
self.lbl_thumb_counter.setFont(font)
self.lbl_thumb_counter.setFrameShape(QtWidgets.QFrame.Shape.Box)
self.lbl_thumb_counter.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.lbl_thumb_counter.setObjectName("lbl_thumb_counter")
self.button_select_images = QtWidgets.QPushButton(parent=self.centralwidget)
self.button_select_images.setGeometry(QtCore.QRect(40, 590, 251, 31))
font = QtGui.QFont()
font.setBold(True)
self.button_select_images.setFont(font)
self.button_select_images.setStyleSheet("background-color: rgb(0, 208, 255);")
self.button_select_images.setObjectName("button_select_images")
self.button_select_images.clicked.connect(self.searching_file)
self.button_thumb_left.clicked.connect(lambda: self.setting_thumbnail(direction="decrease"))
self.button_thumb_right.clicked.connect(lambda: self.setting_thumbnail(direction="increase"))
self.button_clear_images = QtWidgets.QPushButton(parent=self.centralwidget)
self.button_clear_images.setGeometry(QtCore.QRect(40, 630, 251, 31))
font = QtGui.QFont()
font.setBold(True)
self.button_clear_images.setFont(font)
self.button_clear_images.setStyleSheet("background-color: rgb(76, 255, 0);")
self.button_clear_images.setObjectName("button_clear_images")
#clearimages
self.button_clear_images.clicked.connect(self.clear_old_files)##self.config_load_icons
DaisyWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(parent=DaisyWindow)
self.statusbar.setObjectName("statusbar")
DaisyWindow.setStatusBar(self.statusbar)
self.retranslateUi(DaisyWindow)
self.tabs_functions.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(DaisyWindow)
#########function to load in config file for location of icons or else theyre blank
def config_load_icons(self):
print("seeking ui config")
global default_picture
global daisy_icon
global file_path_to_script
config_txt_location=file_path_to_script+"/config.txt"
if os.path.isfile(config_txt_location):
with open(config_txt_location, 'r') as reader:
all_lines=reader.readlines()
default_picture=all_lines[0]+"/uv_empty.png"
daisy_icon=all_lines[0]+"/daisy_icon.png"
file_path_to_script=all_lines[0]
else:
with open(config_txt_location, 'w') as reader:
line1="Input location folder of load images"
reader.write(line1)
###functions for swapping label and instructions per tab
def swap_title_tabber(self):
tab_index=self.tabs_functions.currentIndex()
tab_name=self.tabs_functions.tabText(tab_index)
print(str(tab_name))
if tab_name=="File Format Converter":
self.label_title.setText("Image File Type Converter")
self.label_instructions.setText("This tab allows you to convert any image file into another type. Caution: Some filetypes may have more compression than others or lose the alpha channel, always check the final result.")
elif tab_name=="Size Rescaler":
self.label_title.setText("Image File Size Adjuster")
self.label_instructions.setText("This tab allows you to rescale images. For best results with textures ensure your width is the same as height e.g. 1024 by 1024.")
elif tab_name=="Combiner":
self.label_title.setText("Image Channels Packer")
self.label_instructions.setText("This tabs allows you to combine multiple greyscale image files into one file. This reduces unique texture calls in engine. The resolution of the first file will override the remaining channels to ensure best fit.")
elif tab_name=="Splitter":
self.label_title.setText("Image Channels Splitter")
self.label_instructions.setText("This tab allows you to split the colour channels Red, Green, Blue and Alpha from a image. Toggle the desired channels and export format to split them from the original file. ")
######rescale stuff
def fill_scale_info(self):
if len(stored_images)!=0:
global thumbnail_current_loaded
loaded_index=thumbnail_current_loaded-1
print("loading index"+str(loaded_index))
thumbnail_loaded_picture=stored_images[loaded_index]
with PIL.Image.open(thumbnail_loaded_picture) as image_thumb:
size_of_picture=image_thumb.size
self.spin_width_custom.setValue(int(size_of_picture[0]))
self.spin_height_custom.setValue(int(size_of_picture[1]))
def rescale_func(self):
#if it isnt empty
if len(stored_images)!=0:
global thumbnail_current_loaded
loaded_index=thumbnail_current_loaded-1
for image_file in stored_images:
with PIL.Image.open(image_file).convert('RGB') as im:
operation_rescale_mod=self.tabs_rescale_function.tabText(self.tabs_rescale_function.currentIndex())
print(operation_rescale_mod)
rescale_width=0
rescale_heighth=0
####################### scales based on set resolution value ###############
if operation_rescale_mod=="Set Scale":
print("set scaling now")
scale_picked=self.combo_resolution_dropdown.currentIndex()
scale_from_arr=dropdown_resolutions_pick[scale_picked]
rescale_width=scale_from_arr
rescale_heighth=scale_from_arr
####################### scales based on percentage ###############
elif operation_rescale_mod=="Percent":
print("percentage mode now")
size_of_picture=im.size
rescale_width=size_of_picture[0]
rescale_heighth=size_of_picture[1]
percentage_val=self.spinBox_rescale_percentage.value()
scale_val_final=1
if self.combo_scale_up_or_down.currentIndex()==0:
scale_val_final=(percentage_val/100)+1
elif self.combo_scale_up_or_down.currentIndex()==1:
scale_val_final=1-(percentage_val/100)
if self.checkBox_apply_to_width.isChecked():
print("its checked ey for width")
rescale_width=rescale_width*scale_val_final
rescale_width=round(rescale_width)
print("new width is "+str(rescale_width))
if self.checkBox_apply_to_height.isChecked():
print("its checked ey for height")
print("before its "+str(rescale_heighth))
rescale_heighth=rescale_heighth*scale_val_final
rescale_heighth=round(rescale_heighth)
print("new height is "+str(rescale_heighth))
####################### scales based on the inputted custom ###############
elif operation_rescale_mod=="Custom":
rescale_width=self.spin_width_custom.value()
rescale_heighth=self.spin_height_custom.value()
####################### scales based on the currently loaded thumb picture ###############
elif operation_rescale_mod=="Reuse Scale":
thumbnail_loaded_picture=stored_images[loaded_index]
with PIL.Image.open(thumbnail_loaded_picture) as image_thumb:
size_of_picture=image_thumb.size
rescale_width=size_of_picture[0]
rescale_heighth=size_of_picture[1]
#solo open(stored_images[loaded_index])
#preventing error of 0
if int(rescale_width)<=int(0):
rescale_width=1
if int(rescale_heighth)<=0:
rescale_heighth=1
#finding out what the input image is type wise
just_suffix=image_file[image_file.rfind('.'):]
path_name_new=image_file[:image_file.rfind('.')]
suffix_cleanup=just_suffix[1:].upper()
print(path_name_new)
if suffix_cleanup=="JPG":
suffix_cleanup="JPEG"
new_path_name=path_name_new+"_"+str(rescale_width)+"_"+str(rescale_heighth)+just_suffix
#set to scaling it now
#resizes image
im_resized=im.resize(size=[int(rescale_width),int(rescale_heighth)])
###saving check
if self.checkBox_overwrite_rescale.isChecked()==True:
print("checked overwrite ono")
im_resized.save(image_file,suffix_cleanup)
else:
print("overwrite off")
im_resized.save(new_path_name,suffix_cleanup)
#########setting save file location
def setting_save_loc_both(self):
global save_file_path_split_comb
print("setting file save location")
file_dialog = QFileDialog(DaisyWindow)
file_dialog.setWindowTitle("Set Save Folder")
file_dialog.setFileMode(QFileDialog.FileMode.Directory)
file_dialog.setViewMode(QFileDialog.ViewMode.Detail)
#file_dialog.setNameFilters(["Images (*.png *.webp *.jpeg *.heic *.gif *.tga *.jpg *.tiff)"])
if file_dialog.exec():
file_dir_from_prompt = file_dialog.selectedFiles()[0] #selectedFiles
print("set save directory")
save_file_path_split_comb=str(file_dir_from_prompt)
self.label_save_loc_show_combiner.setText(save_file_path_split_comb)
self.label_save_loc_show_splitter.setText(save_file_path_split_comb)
else:
print("failed to set save directory defaulting")
save_file_path_split_comb=str(Path.home() / "Downloads")
self.label_save_loc_show_splitter.setText('../../User/Downloads/')
self.label_save_loc_show_combiner.setText('../../User/Downloads/')
######### clears thumnails for splitter
def clear_thumbnails(self,clear_mode):
if clear_mode=="All":
self.channel_thumb_splitter_red.setPixmap(QtGui.QPixmap(default_picture))
self.channel_thumb_splitter_green.setPixmap(QtGui.QPixmap(default_picture))
self.channel_thumb_splitter_blue.setPixmap(QtGui.QPixmap(default_picture))
self.channel_thumb_splitter_alpha.setPixmap(QtGui.QPixmap(default_picture))
elif clear_mode=="Red":
self.channel_thumb_splitter_red.setPixmap(QtGui.QPixmap(default_picture))
elif clear_mode=="Green":
self.channel_thumb_splitter_green.setPixmap(QtGui.QPixmap(default_picture))
elif clear_mode=="Blue":
self.channel_thumb_splitter_blue.setPixmap(QtGui.QPixmap(default_picture))
elif clear_mode=="Alpha":
self.channel_thumb_splitter_alpha.setPixmap(QtGui.QPixmap(default_picture))
#thumbnails setting for splitter
def load_splitter(self,inp_file_location):
with PIL.Image.open(inp_file_location).convert('L') as thumb_temp:
temp_save_location=file_path_to_script[:-6]+"/files/splitter_thumbnail_thumb.jpeg"
thumb_temp.save(temp_save_location,'JPEG')
return str(temp_save_location)
#####get the splitting logic
def splitting_maps(self):
print("splitting up maps from inputted picture")
if len(stored_images)!=0:
global thumbnail_current_loaded
loaded_index=thumbnail_current_loaded-1
print("not empty splitting")
split_channels=[]
if self.chbox_red_channel.isChecked()==True:
split_channels.append(0)
print("now splitting red")
if self.chbox_green_channel.isChecked()==True:
split_channels.append(1)
print("now splitting green")
if self.chbox_blue_channel.isChecked()==True:
split_channels.append(2)
print("now splitting blue")
if self.chbox_alpha_channel.isChecked()==True:
split_channels.append(3)
print("now splitting alpha")
if len(split_channels)!=0:
print("not empty, now exporting")
resolution_set=[int(self.spin_combiner_export_width.value()),int(self.spin_combiner_export_height.value())]
selected_load=PIL.Image.open(stored_images[loaded_index]).resize(resolution_set)
split_channels_image=selected_load.split()
#make the export name
name_of_file=os.path.basename(str(stored_images[loaded_index]))
keep_first_name=name_of_file[:name_of_file.rfind('.')]
for channel in split_channels:
if channel<len(split_channels_image):
print("now exporting"+str(channel))
channel_image=split_channels_image[channel]
combined_final_name=save_file_path_split_comb+"/"+keep_first_name+"_"+str(channel)+dropdown_endings[self.combobox_save_files_combiner.currentIndex()]
export_upper=dropdown_endings[self.combobox_save_files_combiner.currentIndex()].upper()
export_type=export_upper[1:]
channel_image.save(combined_final_name,export_type)
##now set preview thumbnails
for channel in split_channels:
#get file if exists, make thumb then replace image
file_path_channel=save_file_path_split_comb+"/"+keep_first_name+"_"+str(channel)+dropdown_endings[self.combobox_save_files_combiner.currentIndex()]
check_existance=os.path.isfile(file_path_channel)
if check_existance:
print("exists makin thumb")
load_path=self.load_splitter(inp_file_location=file_path_channel)
print(load_path)
if channel==0:
self.channel_thumb_splitter_red.setPixmap(QtGui.QPixmap(load_path))
elif channel==1:
self.channel_thumb_splitter_green.setPixmap(QtGui.QPixmap(load_path))
elif channel==2:
self.channel_thumb_splitter_blue.setPixmap(QtGui.QPixmap(load_path))
elif channel==3:
self.channel_thumb_splitter_alpha.setPixmap(QtGui.QPixmap(load_path))
else:
if channel==0:
self.channel_thumb_splitter_red.setPixmap(QtGui.QPixmap(default_picture))
elif channel==1:
self.channel_thumb_splitter_green.setPixmap(QtGui.QPixmap(default_picture))
elif channel==2:
self.channel_thumb_splitter_blue.setPixmap(QtGui.QPixmap(default_picture))
elif channel==3:
self.channel_thumb_splitter_alpha.setPixmap(QtGui.QPixmap(default_picture))
########################## get the combining logic
########actually combine them into one final file
def final_file_combiner(self):
global stored_combiner_files
if stored_combiner_files!=[0,0,0,0]:
print(stored_combiner_files)
print("not empty lets start combining")
###find the resolution
resolution_set=[int(self.spin_combiner_export_width.value()),int(self.spin_combiner_export_height.value())]
global file_path_to_script
file_path_old=file_path_to_script[:-6]+"/files/debug.png"
####save_location_here
keep_first_name="Empty"
for file_check in stored_combiner_files:
name_of_file=os.path.basename(str(file_check))
keep_first_name=name_of_file[:name_of_file.rfind('.')]
if file_check!=str(0):
break
final_combined_store=[]
##add blacks for empty data
for image in stored_combiner_files:
if str(image)=="0":
print("no data found adding black")
create_black=Image.new(mode='L',size=resolution_set,color=0)
final_combined_store.append(create_black)
else:
new_image_open=PIL.Image.open(image).convert('L')
new_image_rescaled=new_image_open.resize(resolution_set)
final_combined_store.append(new_image_rescaled)
#make the export name
combined_final_name=save_file_path_split_comb+"/"+keep_first_name+dropdown_endings[self.combobox_save_files_combiner.currentIndex()]
export_upper=dropdown_endings[self.combobox_save_files_combiner.currentIndex()].upper()
export_type=export_upper[1:]
print(export_type)
#now finally save itt
#if there is no alpha
if str(stored_combiner_files[3])=="0":
new_combined = Image.merge("RGB",(final_combined_store[0],final_combined_store[1],final_combined_store[2]))
new_combined.save(combined_final_name,export_type)
else:
#if there is alpha but its set to export as jpeg
if export_type=="JPEG":
new_combined = Image.merge("RGB",(final_combined_store[0],final_combined_store[1],final_combined_store[2]))
new_combined.save(combined_final_name,export_type)
else: # if there is alpha and its literally any other format
new_combined = Image.merge("RGBA",(final_combined_store[0],final_combined_store[1],final_combined_store[2],final_combined_store[3]))
new_combined.save(combined_final_name,export_type)
##file prompt to load in for combine slot thumbnail
def load_combiner(self,color_saver):
file_dialog = QFileDialog(DaisyWindow)
file_dialog.setWindowTitle("Open File")
file_dialog.setFileMode(QFileDialog.FileMode.ExistingFile)
file_dialog.setViewMode(QFileDialog.ViewMode.Detail)
file_dialog.setNameFilters(["Images (*.png *.webp *.jpeg *.heic *.gif *.tga *.jpg *.tiff)"])
if file_dialog.exec():
sel_file_combiner = file_dialog.selectedFiles()[0] #selectedFiles
with PIL.Image.open(sel_file_combiner).convert('L') as thumb_temp:
temp_save_location=file_path_to_script[:-6]+"/files/combiner_thumbnail_"+"color_saver"+".jpeg"
thumb_temp.save(temp_save_location,'JPEG')
return sel_file_combiner,temp_save_location
else:
sel_file_combiner=0
temp_save_location=0
return sel_file_combiner,temp_save_location
###load thumb for combinin slots
def combine_load_images(self,color_image,clear_mode):
if clear_mode=="Clear":
print("clearing data")
if color_image=="Red":
self.channel_thumb_combiner_red.setPixmap(QtGui.QPixmap(default_picture))
stored_combiner_files[0]=0
elif color_image=="Green":
self.channel_thumb_combiner_green.setPixmap(QtGui.QPixmap(default_picture))
stored_combiner_files[1]=0
elif color_image=="Blue":
self.channel_thumb_combiner_blue.setPixmap(QtGui.QPixmap(default_picture))
stored_combiner_files[2]=0
elif color_image=="Alpha":
self.channel_thumb_combiner_alpha.setPixmap(QtGui.QPixmap(default_picture))
stored_combiner_files[3]=0
print(stored_combiner_files)
elif clear_mode=="Load":
print("loading data")
if color_image=="Red":
loaded_picture=self.load_combiner(color_saver="Red")
if loaded_picture[0]==0:
print("nothing found")
self.channel_thumb_combiner_red.setPixmap(QtGui.QPixmap(default_picture))
stored_combiner_files[0]=0
else:
self.channel_thumb_combiner_red.setPixmap(QtGui.QPixmap(loaded_picture[1]))
stored_combiner_files[0]=loaded_picture[0]
elif color_image=="Green":
loaded_picture=self.load_combiner(color_saver="Green")
if loaded_picture[0]==0:
print("nothing found")
self.channel_thumb_combiner_green.setPixmap(QtGui.QPixmap(default_picture))
stored_combiner_files[1]=0
else:
self.channel_thumb_combiner_green.setPixmap(QtGui.QPixmap(loaded_picture[1]))
stored_combiner_files[1]=loaded_picture[0]
elif color_image=="Blue":
loaded_picture=self.load_combiner(color_saver="Blue")
if loaded_picture[0]==0:
print("nothing found")
self.channel_thumb_combiner_blue.setPixmap(QtGui.QPixmap(default_picture))
stored_combiner_files[2]=0
else:
self.channel_thumb_combiner_blue.setPixmap(QtGui.QPixmap(loaded_picture[1]))
stored_combiner_files[2]=loaded_picture[0]
elif color_image=="Alpha":
loaded_picture=self.load_combiner(color_saver="Alpha")
if loaded_picture[0]==0:
print("nothing found")
self.channel_thumb_combiner_alpha.setPixmap(QtGui.QPixmap(default_picture))
stored_combiner_files[3]=0
#os.remove(default_picture)
else:
self.channel_thumb_combiner_alpha.setPixmap(QtGui.QPixmap(loaded_picture[1]))
stored_combiner_files[3]=loaded_picture[0]
print(stored_combiner_files)
else:
print("not work")
#####all the functions for doing stuff for converting
def file_size_getter(self):
#size multi
#positions are tga, webp, png, jpeg then the scaler type corresponds what its converting FROM into
tga_scaler=[1,0.1,0.8,0.2]
webp_scaler=[11,1,10,4]
png_scaler=[1.5,0.1,1,0.4]
jpeg_scaler=[6,0.4,5,1]
size_list=len(stored_images)
print("current list size is "+str(size_list))
if size_list!=0:
#getting file size for loaded thumb on left
global thumbnail_current_loaded
loaded_index=thumbnail_current_loaded-1
print("current index is "+str(loaded_index))
old_file_size=os.path.getsize(stored_images[loaded_index])
square_no=int(self.comboBox_file_size_unit.currentIndex()+1)
print(str(pow(1024,square_no)))
final_old_filesize=round(old_file_size/(pow(1024,square_no)),3)
old_file_make="Old File Size: "+str(final_old_filesize)+" "+str(self.comboBox_file_size_unit.currentText().lower())
self.label_old_filesize.setText(old_file_make)
#get resolution
with PIL.Image.open(stored_images[loaded_index]) as im:
self.label_file_res.setText("File Resolution: "+str(im.size))
self.label_channels.setText("Channels: "+str(im.mode))
self.label_current_resolution_rescaler.setText("Current Resolution: "+str(im.size))
self.label_reuse_scale_option_text.setText("Rescaling Images to "+str(im.size))
#getting the file types to convert to and fro
filename=stored_images[loaded_index]
just_suffix=filename[filename.rfind('.'):]
multiplier=0;
if just_suffix==".png":
print("selected png")
multiplier=png_scaler[self.combo_file_types.currentIndex()]
elif just_suffix==".tga":
print("selected tga")
multiplier=tga_scaler[self.combo_file_types.currentIndex()]
elif just_suffix==".webp":
print("selected webp")
multiplier=webp_scaler[self.combo_file_types.currentIndex()]
elif just_suffix==".jpeg" or ".jpg":
print("selected jpeg")
multiplier=jpeg_scaler[self.combo_file_types.currentIndex()]
else:
print("not found multiplier weird")
self.label_image_file_type_rescaler.setText("Image File Type: "+just_suffix)
print(str(multiplier))
estimated_size=old_file_size*multiplier
final_estimated_size=round(estimated_size/(pow(1024,square_no)),3)
estimated_size_text="Estimated File Size: "+str(final_estimated_size)+" "+str(self.comboBox_file_size_unit.currentText().lower())
self.label_new_filesize.setText(estimated_size_text)
#size difference label
size_diff=multiplier*100
if size_diff>100:
self.label_size_difference.setText("Size Difference: File will be larger by "+str(size_diff)+"%")
elif size_diff==100:
self.label_size_difference.setText("Size Difference: File will be same size")
elif size_diff<100 and size_diff>80:
self.label_size_difference.setText("Size Difference: File will be similar size by "+str(size_diff)+"%")
elif size_diff<100 and not size_diff>80:
self.label_size_difference.setText("Size Difference: File will be smaller by "+str(size_diff)+"%")
else:
old_file_make="Old File Size: 0 "+str(self.comboBox_file_size_unit.currentText().lower())
self.label_old_filesize.setText(old_file_make)
self.label_file_res.setText("File Resolution: ")
self.label_channels.setText("Channels: ")
estimated_size=0
estimated_size_text="Estimated File Size: "+str(estimated_size)+" "+str(self.comboBox_file_size_unit.currentText().lower())
self.label_new_filesize.setText(estimated_size_text)
self.label_size_difference.setText("Size Difference: ")
self.label_current_resolution_rescaler.setText("Current Resolution: ")
####################### sets thumbnail on the left and controls which one is active in batchmode ###############
def setting_thumbnail(self,direction):
print("setting ui thumb image")
global thumbnail_current_loaded
global thumbnail_counter
if len(stored_images)!=0:
print("not empty working")
thumbnail_counter=len(stored_images)
if direction=="increase":
print("increasing number")
thumbnail_current_loaded+=1
if thumbnail_current_loaded>thumbnail_counter:
thumbnail_current_loaded=1
elif direction=="decrease":
print("decrease number")
thumbnail_current_loaded-=1
if thumbnail_current_loaded<=0:
thumbnail_current_loaded=thumbnail_counter
#sets the text correctly
#now to set image you can see
filename=stored_images[(thumbnail_current_loaded-1)]
im = PIL.Image.open(filename).convert("RGB")
thumb_file_loc=os.getcwd()+"thumb.jpg"
im.save(thumb_file_loc, "JPEG")
print("made thumbnail now loadin")
self.label_Thumbnail_Preview.setPixmap(QtGui.QPixmap(thumb_file_loc))
else:
print("defaulting")
self.label_Thumbnail_Preview.setPixmap(QtGui.QPixmap(default_picture))
counter_text=str(thumbnail_current_loaded)+"/"+str(thumbnail_counter)
self.lbl_thumb_counter.setText(counter_text)
self.file_size_getter()
####################### searches for file to load into master ui for rescale and file convert ###############
def searching_file(self):
##selecting image file
stored_images.clear()
file_dialog = QFileDialog(DaisyWindow)
file_dialog.setWindowTitle("Open File")
file_dialog.setFileMode(QFileDialog.FileMode.ExistingFiles)
file_dialog.setViewMode(QFileDialog.ViewMode.Detail)
file_dialog.setNameFilters(["Images (*.png *.webp *.jpeg *.heic *.gif *.tga *.jpg *.tiff)"])
if file_dialog.exec():
selected_files = file_dialog.selectedFiles()
global thumbnail_counter
global thumbnail_current_loaded
for image_file in selected_files:
#count em
numb_files=len(selected_files)
if numb_files>1:
message_multi="Total number of "+str(numb_files)+" files have been loaded!"
self.label_name_current_file.setText(message_multi)
self.label_Thumbnail_Preview.setPixmap(QtGui.QPixmap(default_picture))
else:
shorter_name=str(selected_files[0])[-15:]
message_multi="Loaded /../.."+shorter_name
self.label_name_current_file.setText(message_multi)
self.label_Thumbnail_Preview.setPixmap(QtGui.QPixmap(selected_files[0]))
print('name of it is '+str(image_file))
stored_images.append(image_file)
self.label_file_counter.setText("You have selected "+str(numb_files)+" files for converting.")
thumbnail_counter=numb_files
thumbnail_current_loaded=1
self.setting_thumbnail(direction="none")
else:
self.label_Thumbnail_Preview.setPixmap(QtGui.QPixmap(default_picture))
self.label_name_current_file.setText('No files are loaded for converting!')
self.label_file_counter.setText("You have selected 0 files for converting.")
thumbnail_counter=0
#check the array
print(stored_images)
self.file_size_getter()
####################### convert files to different prefix and predict how much it will take memory wise ###############
def convert_files(self):
for filename in stored_images:
prefix_index=self.combo_file_types.currentIndex()
#chosen_prefix=str(dropdown_endings[prefix_index])
#print("chosen prefix rn is "+chosen_prefix)
#chosen_prefix=str(conv_to[cb.current()])
#stops jpegs making more of itself
check_if_same_1=False
check_if_same_2=False
if prefix_index==3:
print("detected jpeg now checking")
chosen_prefix=str(dropdown_endings[prefix_index])
check_if_same_1=filename.endswith(chosen_prefix)
chosen_prefix=str(dropdown_endings[prefix_index+1])
check_if_same_2=filename.endswith(chosen_prefix)
chosen_prefix=str(dropdown_endings[prefix_index])
else:
print("not jpeg")
chosen_prefix=str(dropdown_endings[prefix_index])
check_if_same_1=filename.endswith(chosen_prefix)
#fails if same does not waste convert
if check_if_same_1 or check_if_same_2:
print("same file end skipping")
else:
print("not same file end converting woohoo")
try:
strip_filename=filename[:filename.rfind('.')]
new_filename=strip_filename+str(chosen_prefix)
file_save_pref=chosen_prefix.removeprefix('.')
##fixing the issue where it wont save if its got alpha channel due to jpegs
if file_save_pref=="jpeg" or file_save_pref=="jpg":
im = PIL.Image.open(filename)
checking_mode=str(im.mode)
if checking_mode=="RGBA":
print("its got rgba so converting")
im = PIL.Image.open(filename).convert("RGB")
else:
im = PIL.Image.open(filename)
#rest of chekables applied here and quality
print("the optimise checkbox is "+str(self.box_optimise.isChecked()))
print("the quality setting is set to "+str(self.spn_save_quality.value()))
im.save(new_filename, file_save_pref,optimize=self.box_optimise.isChecked(),quality=int(self.spn_save_quality.value())) #quality=int(self.spn_save_quality.value())
print("succeeded in converting " +str(filename))
except:
print("failed to convert oop")
####################### clears ui thumbnails and data if button pressed ###############
def clear_old_files(self):
global thumbnail_counter
global thumbnail_current_loaded
thumbnail_counter=0
thumbnail_current_loaded=0
clear_counter=len(stored_images)
stored_images.clear()
self.label_Thumbnail_Preview.setPixmap(QtGui.QPixmap(default_picture))
print("clearing from data about "+str(clear_counter)+" entries")
self.label_file_counter.setText("You have selected 0 files for converting.")
self.label_name_current_file.setText('No files are loaded for converting!')
self.file_size_getter()
self.setting_thumbnail(direction="none")
####################### text for previously init ui elements above ###############
def retranslateUi(self, DaisyWindow):
_translate = QtCore.QCoreApplication.translate
DaisyWindow.setWindowTitle(_translate("DaisyWindow", "Image Processor"))
DaisyWindow.setWindowIcon(QtGui.QIcon(daisy_icon))
self.label_title.setText(_translate("DaisyWindow", "Image File Type Converter"))
self.label_instructions.setText(_translate("DaisyWindow", "This tab allows you to convert any image file into another type. Caution: Some filetypes may have more compression than others or lose the alpha channel, always check the final result."))
self.button_thumb_left.setText(_translate("DaisyWindow", "<"))
self.label_name_current_file.setText(_translate("DaisyWindow", "No files are loaded for converting!"))
self.label_loaded_thumb_title.setText(_translate("DaisyWindow", "Currently Loaded File(s):"))
self.button_thumb_right.setText(_translate("DaisyWindow", ">"))
self.lbl_thumbprev.setText(_translate("DaisyWindow", "Preview Thumbnail Controls"))
self.label_intro_convert_type.setText(_translate("DaisyWindow", "Convert selected files into what format?"))
self.combo_file_types.setPlaceholderText(_translate("DaisyWindow", "Debug placeholder text"))
self.label_Step_1.setText(_translate("DaisyWindow", "1"))
self.label_Step_2.setText(_translate("DaisyWindow", "2"))
self.label_intro_convert_type_2.setText(_translate("DaisyWindow", "Load your files for converting using buttons on bottom left."))
self.label_Step_3.setText(_translate("DaisyWindow", "3"))
self.label_intro_convert_type_6.setText(_translate("DaisyWindow", "Click the button below to confirm converting loaded files."))
self.button_convert_loaded.setText(_translate("DaisyWindow", "Convert All Loaded Files"))
self.label_old_filesize.setText(_translate("DaisyWindow", "Old File Size: 0 mb"))
self.label_file_res.setText(_translate("DaisyWindow", "File Resolution:"))
self.label_desc_text_1.setText(_translate("DaisyWindow", "All Selection File Statistics"))
self.label_channels.setText(_translate("DaisyWindow", "Channels:"))
self.label_desc_text_2.setText(_translate("DaisyWindow", "First Loaded File Details"))
self.label_size_difference.setText(_translate("DaisyWindow", "Size Difference:"))
self.label_new_filesize.setText(_translate("DaisyWindow", "Estimated New File Size: 0 mb"))
self.label_file_counter.setText(_translate("DaisyWindow", "You have selected 0 files for converting."))
self.label_intro_convert_type_18.setText(_translate("DaisyWindow", "File Size Unit"))
self.box_optimise.setText(_translate("DaisyWindow", "Optimise File Size?"))
self.spn_save_quality.setSuffix(_translate("DaisyWindow", "%"))
self.lbl_txt_detail.setText(_translate("DaisyWindow", "Save Quality (Higher = Better but larger file size)"))
self.tabs_functions.setTabText(self.tabs_functions.indexOf(self.tab), _translate("DaisyWindow", "File Format Converter"))
self.label_image_stats_title.setText(_translate("DaisyWindow", "Image Statistics:"))
self.label_det_5.setText(_translate("DaisyWindow", "Choose a resolution to scale to from the dropdown box on the left."))
self.label_4.setText(_translate("DaisyWindow", "Texture Resolutions:"))
self.tabs_rescale_function.setTabText(self.tabs_rescale_function.indexOf(self.set_scale_tab), _translate("DaisyWindow", "Set Scale"))
self.label_det_7.setText(_translate("DaisyWindow", "Input the percentage to reduce or increase resolution by. This will apply to specified dimensions."))
self.spinBox_rescale_percentage.setSuffix(_translate("DaisyWindow", "%"))
self.checkBox_apply_to_width.setText(_translate("DaisyWindow", "Apply to Width"))
self.checkBox_apply_to_height.setText(_translate("DaisyWindow", "Apply to Height"))
self.label.setText(_translate("DaisyWindow", "Percentage:"))
self.tabs_rescale_function.setTabText(self.tabs_rescale_function.indexOf(self.percent_tab), _translate("DaisyWindow", "Percent"))
self.label_det_9.setText(_translate("DaisyWindow", "This will apply the currently loaded resolution to all remaining images. Only available when multiple images are loaded."))
self.label_reuse_scale_option_text.setText(_translate("DaisyWindow", "Rescaling images to:"))
self.tabs_rescale_function.setTabText(self.tabs_rescale_function.indexOf(self.tab_3), _translate("DaisyWindow", "Reuse Scale"))
self.label_det_8.setText(_translate("DaisyWindow", "This mode allows you to insert a custom value to rescale all loaded images. Warning this will not crop images."))
self.label_2.setText(_translate("DaisyWindow", "Width:"))
self.label_3.setText(_translate("DaisyWindow", "Height:"))
self.button_autofill_custom_data.setText(_translate("DaisyWindow", "Autofill from thumbnail"))
self.tabs_rescale_function.setTabText(self.tabs_rescale_function.indexOf(self.Custom_Tab), _translate("DaisyWindow", "Custom"))
self.label_image_file_type_rescaler.setText(_translate("DaisyWindow", "Image File Type:"))
self.label_current_resolution_rescaler.setText(_translate("DaisyWindow", "Current Resolution:"))
self.label_det_4.setText(_translate("DaisyWindow", "Choose a Scale Mode Below"))
self.label_det_6.setText(_translate("DaisyWindow", "After choosing scale method and size. Press button below to confirm rescale to loaded images."))
self.checkBox_overwrite_rescale.setText(_translate("DaisyWindow", "Overwrite original file? (Not reccomended)"))
self.button_rescale_images.setText(_translate("DaisyWindow", "Rescale Image(s)"))
self.tabs_functions.setTabText(self.tabs_functions.indexOf(self.tab_2), _translate("DaisyWindow", "Size Rescaler"))
self.button_load_red_channel.setText(_translate("DaisyWindow", "Load Red Image"))
self.button_clear_red_channel.setText(_translate("DaisyWindow", "Clear Red Image"))
self.button_load_green_channel.setText(_translate("DaisyWindow", "Load Green Image"))
self.button_clear_green_channel.setText(_translate("DaisyWindow", "Clear Green Image"))
self.button_load_blue_channel.setText(_translate("DaisyWindow", "Load Blue Image"))
self.button_clear_blue_channel.setText(_translate("DaisyWindow", "Clear Blue Image"))
self.button_load_alpha_channel.setText(_translate("DaisyWindow", "Load Alpha Image"))
self.button_clear_alpha_channel.setText(_translate("DaisyWindow", "Clear Alpha Image"))
self.label_9.setText(_translate("DaisyWindow", "Click on the channel to load the image for combining. Ensure your image is grayscale or it will be converted. Then click on combine to merge loaded images into final texture. "))
self.label_10.setText(_translate("DaisyWindow", "Combining Images"))
self.label_11.setText(_translate("DaisyWindow", "Save Format for Files:"))
self.button_combine_final.setText(_translate("DaisyWindow", "Combine into Final Image"))
self.tabs_functions.setTabText(self.tabs_functions.indexOf(self.tab_splitter_combiner), _translate("DaisyWindow", "Packer"))
self.button_split_channels.setText(_translate("DaisyWindow", "Split Image into Channels"))
self.chbox_blue_channel.setText(_translate("DaisyWindow", "Enable Blue Channel"))
self.label_12.setText(_translate("DaisyWindow", "Save Format for Files:"))
self.label_13.setText(_translate("DaisyWindow", "Select the image to split from your thumbnail. Toggle on the channels you want to split. Then click on the split channels button. Ensure you select a suitable file format to save as, thumbnails will show results after splitting."))
self.label_14.setText(_translate("DaisyWindow", "Splitting Up Image Channels"))
self.chbox_green_channel.setText(_translate("DaisyWindow", "Enable Green Channel"))
self.chbox_red_channel.setText(_translate("DaisyWindow", "Enable Red Channel"))
self.chbox_alpha_channel.setText(_translate("DaisyWindow", "Enable Alpha Channel"))
self.button_clear_images_splitter.setText(_translate("DaisyWindow", "Clear Image Split Thumbnails"))
self.label_expor_size_splitter.setText(_translate("DaisyWindow", "Export Final File Size:"))
self.tabs_functions.setTabText(self.tabs_functions.indexOf(self.tab_4), _translate("DaisyWindow", "Splitter"))
self.label_expor_size_combiner.setText(_translate("DaisyWindow", "Export Final File Size:"))
self.label_inform_save_combiner.setText(_translate("DaisyWindow", "Export Location:"))
self.label_save_loc_show_combiner.setText(_translate("DaisyWindow", ".../.../User/Downloads/"))
self.button_set_save_location_combiner.setText(_translate("DaisyWindow", "Set Location"))
self.button_clear_images_splitter.setText(_translate("DaisyWindow", "Clear Image Split Thumbnails"))
self.label_expor_size_splitter.setText(_translate("DaisyWindow", "Export Final File Size:"))
self.label_save_loc_show_splitter.setText(_translate("DaisyWindow", ".../.../User/Downloads/"))
self.button_set_save_location_splitter.setText(_translate("DaisyWindow", "Set Location"))
self.label_inform_save_splitter.setText(_translate("DaisyWindow", "Export Location:"))
self.lbl_thumb_counter.setText(_translate("DaisyWindow", "0/0"))
self.button_select_images.setText(_translate("DaisyWindow", "Select Images Files to Load"))
self.button_clear_images.setText(_translate("DaisyWindow", "Clear Loaded Files"))
####################### starts the main exec script loop ###############
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
DaisyWindow = QtWidgets.QMainWindow()
ui = Ui_DaisyWindow()
ui.setupUi(DaisyWindow)
DaisyWindow.show()
sys.exit(app.exec())
Editor is loading...
Leave a Comment