mirror of
https://github.com/fergalmoran/picard.git
synced 2025-12-26 03:08:02 +00:00
Add more options to image resizing
This commit is contained in:
@@ -35,31 +35,48 @@ class ResizeImage(ImageProcessor):
|
|||||||
|
|
||||||
def save_to_file(self):
|
def save_to_file(self):
|
||||||
config = get_config()
|
config = get_config()
|
||||||
return config.setting['resize_images_saved_to_file']
|
return config.setting['cover_file_scale_down'] or config.setting['cover_file_scale_up']
|
||||||
|
|
||||||
def save_to_tags(self):
|
def save_to_tags(self):
|
||||||
config = get_config()
|
config = get_config()
|
||||||
return config.setting['resize_images_saved_to_tags']
|
return config.setting['cover_tags_scale_down'] or config.setting['cover_tags_scale_up']
|
||||||
|
|
||||||
def same_processing(self):
|
def same_processing(self):
|
||||||
config = get_config()
|
setting = get_config().setting
|
||||||
same_width = config.setting['cover_tags_maximum_width'] == config.setting['cover_file_maximum_width']
|
same_up = setting['cover_file_scale_up'] == setting['cover_tags_scale_up']
|
||||||
same_height = config.setting['cover_tags_maximum_height'] == config.setting['cover_file_maximum_height']
|
same_down = setting['cover_file_scale_down'] == setting['cover_tags_scale_down']
|
||||||
return self.save_to_tags and self.save_to_file and same_width and same_height
|
same_width = setting['cover_file_resize_use_width'] == setting['cover_tags_resize_use_width']
|
||||||
|
if setting['cover_file_resize_use_width'] and setting['cover_tags_resize_use_width']:
|
||||||
|
same_width = setting['cover_file_resize_target_width'] == setting['cover_tags_resize_target_width']
|
||||||
|
same_height = setting['cover_file_resize_use_height'] == setting['cover_tags_resize_use_height']
|
||||||
|
if setting['cover_file_resize_use_height'] and setting['cover_tags_resize_use_height']:
|
||||||
|
same_height = setting['cover_file_resize_target_height'] == setting['cover_tags_resize_target_height']
|
||||||
|
return same_up and same_down and same_width and same_height and self.save_to_file() and self.save_to_tags()
|
||||||
|
|
||||||
def run(self, image, target):
|
def _find_target_size(self, image, target):
|
||||||
start_time = time.time()
|
|
||||||
config = get_config()
|
config = get_config()
|
||||||
|
target_width = image.info.width
|
||||||
|
target_height = image.info.height
|
||||||
if target == ProcessingTarget.TAGS:
|
if target == ProcessingTarget.TAGS:
|
||||||
max_width = config.setting['cover_tags_maximum_width']
|
if config.setting['cover_tags_resize_use_width']:
|
||||||
max_height = config.setting['cover_tags_maximum_height']
|
target_width = config.setting['cover_tags_resize_target_width']
|
||||||
|
if config.setting['cover_tags_resize_use_height']:
|
||||||
|
target_height = config.setting['cover_tags_resize_target_height']
|
||||||
|
scaling_up = config.setting['cover_tags_scale_up']
|
||||||
|
scaling_down = config.setting['cover_tags_scale_down']
|
||||||
else:
|
else:
|
||||||
max_width = config.setting['cover_file_maximum_width']
|
if config.setting['cover_file_resize_use_width']:
|
||||||
max_height = config.setting['cover_file_maximum_height']
|
target_width = config.setting['cover_file_resize_target_width']
|
||||||
if image.info.width <= max_width and image.info.height <= max_height:
|
if config.setting['cover_file_resize_use_height']:
|
||||||
return
|
target_height = config.setting['cover_file_resize_target_height']
|
||||||
|
scaling_up = config.setting['cover_file_scale_up']
|
||||||
|
scaling_down = config.setting['cover_file_scale_down']
|
||||||
|
return target_width, target_height, scaling_up, scaling_down
|
||||||
|
|
||||||
|
def _resize_image(self, image, target_width, target_height, aspect_ratio):
|
||||||
|
start_time = time.time()
|
||||||
qimage = image.get_result()
|
qimage = image.get_result()
|
||||||
scaled_image = qimage.scaled(max_width, max_height, Qt.AspectRatioMode.KeepAspectRatio)
|
scaled_image = qimage.scaled(target_width, target_height, aspect_ratio)
|
||||||
log.debug(
|
log.debug(
|
||||||
"Resized cover art from %d x %d to %d x %d in %.2f ms",
|
"Resized cover art from %d x %d to %d x %d in %.2f ms",
|
||||||
image.info.width,
|
image.info.width,
|
||||||
@@ -73,5 +90,16 @@ class ResizeImage(ImageProcessor):
|
|||||||
image.info.datalen = scaled_image.sizeInBytes()
|
image.info.datalen = scaled_image.sizeInBytes()
|
||||||
image.set_result(scaled_image)
|
image.set_result(scaled_image)
|
||||||
|
|
||||||
|
def run(self, image, target):
|
||||||
|
target_width, target_height, scaling_up, scaling_down = self._find_target_size(image, target)
|
||||||
|
if scaling_down and (image.info.width > target_width or image.info.height > target_height):
|
||||||
|
aspect_ratio = Qt.AspectRatioMode.KeepAspectRatio
|
||||||
|
elif scaling_up and (image.info.width < target_width or image.info.height < target_height):
|
||||||
|
aspect_ratio = Qt.AspectRatioMode.KeepAspectRatioByExpanding
|
||||||
|
else:
|
||||||
|
# no resizing is needed
|
||||||
|
return
|
||||||
|
self._resize_image(image, target_width, target_height, aspect_ratio)
|
||||||
|
|
||||||
|
|
||||||
register_cover_art_processor(ResizeImage)
|
register_cover_art_processor(ResizeImage)
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ class ImageProcessor:
|
|||||||
def same_processing(self):
|
def same_processing(self):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def run(self, data, target):
|
def run(self, image, target):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -175,12 +175,18 @@ BoolOption('setting', 'save_only_one_front_image', False, title=N_("Save only a
|
|||||||
BoolOption('setting', 'filter_cover_by_size', False)
|
BoolOption('setting', 'filter_cover_by_size', False)
|
||||||
IntOption('setting', 'cover_minimum_width', DEFAULT_COVER_MIN_SIZE)
|
IntOption('setting', 'cover_minimum_width', DEFAULT_COVER_MIN_SIZE)
|
||||||
IntOption('setting', 'cover_minimum_height', DEFAULT_COVER_MIN_SIZE)
|
IntOption('setting', 'cover_minimum_height', DEFAULT_COVER_MIN_SIZE)
|
||||||
BoolOption('setting', 'resize_images_saved_to_tags', False)
|
BoolOption('setting', 'cover_tags_scale_up', False)
|
||||||
IntOption('setting', 'cover_tags_maximum_width', DEFAULT_COVER_MAX_SIZE)
|
BoolOption('setting', 'cover_tags_scale_down', False)
|
||||||
IntOption('setting', 'cover_tags_maximum_height', DEFAULT_COVER_MAX_SIZE)
|
BoolOption('setting', 'cover_tags_resize_use_width', True)
|
||||||
BoolOption('setting', 'resize_images_saved_to_file', False)
|
IntOption('setting', 'cover_tags_resize_target_width', DEFAULT_COVER_MAX_SIZE)
|
||||||
IntOption('setting', 'cover_file_maximum_width', DEFAULT_COVER_MAX_SIZE)
|
BoolOption('setting', 'cover_tags_resize_use_height', True)
|
||||||
IntOption('setting', 'cover_file_maximum_height', DEFAULT_COVER_MAX_SIZE)
|
IntOption('setting', 'cover_tags_resize_target_height', DEFAULT_COVER_MAX_SIZE)
|
||||||
|
BoolOption('setting', 'cover_file_scale_up', False)
|
||||||
|
BoolOption('setting', 'cover_file_scale_down', False)
|
||||||
|
BoolOption('setting', 'cover_file_resize_use_width', True)
|
||||||
|
IntOption('setting', 'cover_file_resize_target_width', DEFAULT_COVER_MAX_SIZE)
|
||||||
|
BoolOption('setting', 'cover_file_resize_use_height', True)
|
||||||
|
IntOption('setting', 'cover_file_resize_target_height', DEFAULT_COVER_MAX_SIZE)
|
||||||
|
|
||||||
# picard/ui/options/dialog.py
|
# picard/ui/options/dialog.py
|
||||||
# Attached Profiles
|
# Attached Profiles
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ from picard.i18n import gettext as _
|
|||||||
class Ui_CoverProcessingOptionsPage(object):
|
class Ui_CoverProcessingOptionsPage(object):
|
||||||
def setupUi(self, CoverProcessingOptionsPage):
|
def setupUi(self, CoverProcessingOptionsPage):
|
||||||
CoverProcessingOptionsPage.setObjectName("CoverProcessingOptionsPage")
|
CoverProcessingOptionsPage.setObjectName("CoverProcessingOptionsPage")
|
||||||
CoverProcessingOptionsPage.resize(518, 285)
|
CoverProcessingOptionsPage.resize(478, 361)
|
||||||
self.verticalLayout = QtWidgets.QVBoxLayout(CoverProcessingOptionsPage)
|
self.verticalLayout = QtWidgets.QVBoxLayout(CoverProcessingOptionsPage)
|
||||||
self.verticalLayout.setObjectName("verticalLayout")
|
self.verticalLayout.setObjectName("verticalLayout")
|
||||||
self.filtering = QtWidgets.QGroupBox(parent=CoverProcessingOptionsPage)
|
self.filtering = QtWidgets.QGroupBox(parent=CoverProcessingOptionsPage)
|
||||||
@@ -88,30 +88,42 @@ class Ui_CoverProcessingOptionsPage(object):
|
|||||||
self.horizontalLayout_7 = QtWidgets.QHBoxLayout(self.resizing)
|
self.horizontalLayout_7 = QtWidgets.QHBoxLayout(self.resizing)
|
||||||
self.horizontalLayout_7.setObjectName("horizontalLayout_7")
|
self.horizontalLayout_7.setObjectName("horizontalLayout_7")
|
||||||
self.save_to_tags = QtWidgets.QGroupBox(parent=self.resizing)
|
self.save_to_tags = QtWidgets.QGroupBox(parent=self.resizing)
|
||||||
self.save_to_tags.setCheckable(True)
|
self.save_to_tags.setCheckable(False)
|
||||||
self.save_to_tags.setChecked(False)
|
self.save_to_tags.setChecked(False)
|
||||||
self.save_to_tags.setObjectName("save_to_tags")
|
self.save_to_tags.setObjectName("save_to_tags")
|
||||||
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.save_to_tags)
|
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.save_to_tags)
|
||||||
self.verticalLayout_3.setObjectName("verticalLayout_3")
|
self.verticalLayout_3.setObjectName("verticalLayout_3")
|
||||||
|
self.tags_scale_widget = QtWidgets.QWidget(parent=self.save_to_tags)
|
||||||
|
self.tags_scale_widget.setObjectName("tags_scale_widget")
|
||||||
|
self.horizontalLayout_8 = QtWidgets.QHBoxLayout(self.tags_scale_widget)
|
||||||
|
self.horizontalLayout_8.setContentsMargins(0, 0, 0, 0)
|
||||||
|
self.horizontalLayout_8.setObjectName("horizontalLayout_8")
|
||||||
|
self.tags_scale_up = QtWidgets.QCheckBox(parent=self.tags_scale_widget)
|
||||||
|
self.tags_scale_up.setObjectName("tags_scale_up")
|
||||||
|
self.horizontalLayout_8.addWidget(self.tags_scale_up)
|
||||||
|
self.tags_scale_down = QtWidgets.QCheckBox(parent=self.tags_scale_widget)
|
||||||
|
self.tags_scale_down.setObjectName("tags_scale_down")
|
||||||
|
self.horizontalLayout_8.addWidget(self.tags_scale_down)
|
||||||
|
self.verticalLayout_3.addWidget(self.tags_scale_widget)
|
||||||
self.tags_resize_width_widget = QtWidgets.QWidget(parent=self.save_to_tags)
|
self.tags_resize_width_widget = QtWidgets.QWidget(parent=self.save_to_tags)
|
||||||
self.tags_resize_width_widget.setObjectName("tags_resize_width_widget")
|
self.tags_resize_width_widget.setObjectName("tags_resize_width_widget")
|
||||||
self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.tags_resize_width_widget)
|
self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.tags_resize_width_widget)
|
||||||
self.horizontalLayout_5.setContentsMargins(0, 0, 0, 0)
|
self.horizontalLayout_5.setContentsMargins(0, 0, 0, 0)
|
||||||
self.horizontalLayout_5.setSpacing(4)
|
self.horizontalLayout_5.setSpacing(4)
|
||||||
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
|
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
|
||||||
self.tags_resized_width_label = QtWidgets.QLabel(parent=self.tags_resize_width_widget)
|
self.tags_resize_width_label = QtWidgets.QCheckBox(parent=self.tags_resize_width_widget)
|
||||||
self.tags_resized_width_label.setObjectName("tags_resized_width_label")
|
self.tags_resize_width_label.setObjectName("tags_resize_width_label")
|
||||||
self.horizontalLayout_5.addWidget(self.tags_resized_width_label)
|
self.horizontalLayout_5.addWidget(self.tags_resize_width_label)
|
||||||
self.tags_resized_width_value = QtWidgets.QSpinBox(parent=self.tags_resize_width_widget)
|
self.tags_resize_width_value = QtWidgets.QSpinBox(parent=self.tags_resize_width_widget)
|
||||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Fixed)
|
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Fixed)
|
||||||
sizePolicy.setHorizontalStretch(0)
|
sizePolicy.setHorizontalStretch(0)
|
||||||
sizePolicy.setVerticalStretch(0)
|
sizePolicy.setVerticalStretch(0)
|
||||||
sizePolicy.setHeightForWidth(self.tags_resized_width_value.sizePolicy().hasHeightForWidth())
|
sizePolicy.setHeightForWidth(self.tags_resize_width_value.sizePolicy().hasHeightForWidth())
|
||||||
self.tags_resized_width_value.setSizePolicy(sizePolicy)
|
self.tags_resize_width_value.setSizePolicy(sizePolicy)
|
||||||
self.tags_resized_width_value.setMaximum(9999)
|
self.tags_resize_width_value.setMaximum(9999)
|
||||||
self.tags_resized_width_value.setProperty("value", 1000)
|
self.tags_resize_width_value.setProperty("value", 1000)
|
||||||
self.tags_resized_width_value.setObjectName("tags_resized_width_value")
|
self.tags_resize_width_value.setObjectName("tags_resize_width_value")
|
||||||
self.horizontalLayout_5.addWidget(self.tags_resized_width_value)
|
self.horizontalLayout_5.addWidget(self.tags_resize_width_value)
|
||||||
self.px_label5 = QtWidgets.QLabel(parent=self.tags_resize_width_widget)
|
self.px_label5 = QtWidgets.QLabel(parent=self.tags_resize_width_widget)
|
||||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Preferred)
|
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Preferred)
|
||||||
sizePolicy.setHorizontalStretch(0)
|
sizePolicy.setHorizontalStretch(0)
|
||||||
@@ -127,19 +139,19 @@ class Ui_CoverProcessingOptionsPage(object):
|
|||||||
self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
|
self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
|
||||||
self.horizontalLayout_3.setSpacing(4)
|
self.horizontalLayout_3.setSpacing(4)
|
||||||
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
|
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
|
||||||
self.tags_resized_height_label = QtWidgets.QLabel(parent=self.tags_resize_height_widget)
|
self.tags_resize_height_label = QtWidgets.QCheckBox(parent=self.tags_resize_height_widget)
|
||||||
self.tags_resized_height_label.setObjectName("tags_resized_height_label")
|
self.tags_resize_height_label.setObjectName("tags_resize_height_label")
|
||||||
self.horizontalLayout_3.addWidget(self.tags_resized_height_label)
|
self.horizontalLayout_3.addWidget(self.tags_resize_height_label)
|
||||||
self.tags_resized_height_value = QtWidgets.QSpinBox(parent=self.tags_resize_height_widget)
|
self.tags_resize_height_value = QtWidgets.QSpinBox(parent=self.tags_resize_height_widget)
|
||||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Fixed)
|
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Fixed)
|
||||||
sizePolicy.setHorizontalStretch(0)
|
sizePolicy.setHorizontalStretch(0)
|
||||||
sizePolicy.setVerticalStretch(0)
|
sizePolicy.setVerticalStretch(0)
|
||||||
sizePolicy.setHeightForWidth(self.tags_resized_height_value.sizePolicy().hasHeightForWidth())
|
sizePolicy.setHeightForWidth(self.tags_resize_height_value.sizePolicy().hasHeightForWidth())
|
||||||
self.tags_resized_height_value.setSizePolicy(sizePolicy)
|
self.tags_resize_height_value.setSizePolicy(sizePolicy)
|
||||||
self.tags_resized_height_value.setMaximum(9999)
|
self.tags_resize_height_value.setMaximum(9999)
|
||||||
self.tags_resized_height_value.setProperty("value", 1000)
|
self.tags_resize_height_value.setProperty("value", 1000)
|
||||||
self.tags_resized_height_value.setObjectName("tags_resized_height_value")
|
self.tags_resize_height_value.setObjectName("tags_resize_height_value")
|
||||||
self.horizontalLayout_3.addWidget(self.tags_resized_height_value)
|
self.horizontalLayout_3.addWidget(self.tags_resize_height_value)
|
||||||
self.px_label6 = QtWidgets.QLabel(parent=self.tags_resize_height_widget)
|
self.px_label6 = QtWidgets.QLabel(parent=self.tags_resize_height_widget)
|
||||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Preferred)
|
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Preferred)
|
||||||
sizePolicy.setHorizontalStretch(0)
|
sizePolicy.setHorizontalStretch(0)
|
||||||
@@ -151,30 +163,42 @@ class Ui_CoverProcessingOptionsPage(object):
|
|||||||
self.verticalLayout_3.addWidget(self.tags_resize_height_widget)
|
self.verticalLayout_3.addWidget(self.tags_resize_height_widget)
|
||||||
self.horizontalLayout_7.addWidget(self.save_to_tags)
|
self.horizontalLayout_7.addWidget(self.save_to_tags)
|
||||||
self.save_to_file = QtWidgets.QGroupBox(parent=self.resizing)
|
self.save_to_file = QtWidgets.QGroupBox(parent=self.resizing)
|
||||||
self.save_to_file.setCheckable(True)
|
self.save_to_file.setCheckable(False)
|
||||||
self.save_to_file.setChecked(False)
|
self.save_to_file.setChecked(False)
|
||||||
self.save_to_file.setObjectName("save_to_file")
|
self.save_to_file.setObjectName("save_to_file")
|
||||||
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.save_to_file)
|
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.save_to_file)
|
||||||
self.verticalLayout_4.setObjectName("verticalLayout_4")
|
self.verticalLayout_4.setObjectName("verticalLayout_4")
|
||||||
|
self.file_scale_widget = QtWidgets.QWidget(parent=self.save_to_file)
|
||||||
|
self.file_scale_widget.setObjectName("file_scale_widget")
|
||||||
|
self.horizontalLayout_9 = QtWidgets.QHBoxLayout(self.file_scale_widget)
|
||||||
|
self.horizontalLayout_9.setContentsMargins(0, 0, 0, 0)
|
||||||
|
self.horizontalLayout_9.setObjectName("horizontalLayout_9")
|
||||||
|
self.file_scale_up = QtWidgets.QCheckBox(parent=self.file_scale_widget)
|
||||||
|
self.file_scale_up.setObjectName("file_scale_up")
|
||||||
|
self.horizontalLayout_9.addWidget(self.file_scale_up)
|
||||||
|
self.file_scale_down = QtWidgets.QCheckBox(parent=self.file_scale_widget)
|
||||||
|
self.file_scale_down.setObjectName("file_scale_down")
|
||||||
|
self.horizontalLayout_9.addWidget(self.file_scale_down)
|
||||||
|
self.verticalLayout_4.addWidget(self.file_scale_widget)
|
||||||
self.file_resize_width_widget = QtWidgets.QWidget(parent=self.save_to_file)
|
self.file_resize_width_widget = QtWidgets.QWidget(parent=self.save_to_file)
|
||||||
self.file_resize_width_widget.setObjectName("file_resize_width_widget")
|
self.file_resize_width_widget.setObjectName("file_resize_width_widget")
|
||||||
self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.file_resize_width_widget)
|
self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.file_resize_width_widget)
|
||||||
self.horizontalLayout_6.setContentsMargins(0, 0, 0, 0)
|
self.horizontalLayout_6.setContentsMargins(0, 0, 0, 0)
|
||||||
self.horizontalLayout_6.setSpacing(4)
|
self.horizontalLayout_6.setSpacing(4)
|
||||||
self.horizontalLayout_6.setObjectName("horizontalLayout_6")
|
self.horizontalLayout_6.setObjectName("horizontalLayout_6")
|
||||||
self.file_resized_width_label = QtWidgets.QLabel(parent=self.file_resize_width_widget)
|
self.file_resize_width_label = QtWidgets.QCheckBox(parent=self.file_resize_width_widget)
|
||||||
self.file_resized_width_label.setObjectName("file_resized_width_label")
|
self.file_resize_width_label.setObjectName("file_resize_width_label")
|
||||||
self.horizontalLayout_6.addWidget(self.file_resized_width_label)
|
self.horizontalLayout_6.addWidget(self.file_resize_width_label)
|
||||||
self.file_resized_width_value = QtWidgets.QSpinBox(parent=self.file_resize_width_widget)
|
self.file_resize_width_value = QtWidgets.QSpinBox(parent=self.file_resize_width_widget)
|
||||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Fixed)
|
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Fixed)
|
||||||
sizePolicy.setHorizontalStretch(0)
|
sizePolicy.setHorizontalStretch(0)
|
||||||
sizePolicy.setVerticalStretch(0)
|
sizePolicy.setVerticalStretch(0)
|
||||||
sizePolicy.setHeightForWidth(self.file_resized_width_value.sizePolicy().hasHeightForWidth())
|
sizePolicy.setHeightForWidth(self.file_resize_width_value.sizePolicy().hasHeightForWidth())
|
||||||
self.file_resized_width_value.setSizePolicy(sizePolicy)
|
self.file_resize_width_value.setSizePolicy(sizePolicy)
|
||||||
self.file_resized_width_value.setMaximum(9999)
|
self.file_resize_width_value.setMaximum(9999)
|
||||||
self.file_resized_width_value.setProperty("value", 1000)
|
self.file_resize_width_value.setProperty("value", 1000)
|
||||||
self.file_resized_width_value.setObjectName("file_resized_width_value")
|
self.file_resize_width_value.setObjectName("file_resize_width_value")
|
||||||
self.horizontalLayout_6.addWidget(self.file_resized_width_value)
|
self.horizontalLayout_6.addWidget(self.file_resize_width_value)
|
||||||
self.px_label3 = QtWidgets.QLabel(parent=self.file_resize_width_widget)
|
self.px_label3 = QtWidgets.QLabel(parent=self.file_resize_width_widget)
|
||||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Preferred)
|
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Preferred)
|
||||||
sizePolicy.setHorizontalStretch(0)
|
sizePolicy.setHorizontalStretch(0)
|
||||||
@@ -190,19 +214,19 @@ class Ui_CoverProcessingOptionsPage(object):
|
|||||||
self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0)
|
self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0)
|
||||||
self.horizontalLayout_4.setSpacing(4)
|
self.horizontalLayout_4.setSpacing(4)
|
||||||
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
|
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
|
||||||
self.file_resized_height_label = QtWidgets.QLabel(parent=self.file_resize_height_widget)
|
self.file_resize_height_label = QtWidgets.QCheckBox(parent=self.file_resize_height_widget)
|
||||||
self.file_resized_height_label.setObjectName("file_resized_height_label")
|
self.file_resize_height_label.setObjectName("file_resize_height_label")
|
||||||
self.horizontalLayout_4.addWidget(self.file_resized_height_label)
|
self.horizontalLayout_4.addWidget(self.file_resize_height_label)
|
||||||
self.file_resized_height_value = QtWidgets.QSpinBox(parent=self.file_resize_height_widget)
|
self.file_resize_height_value = QtWidgets.QSpinBox(parent=self.file_resize_height_widget)
|
||||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Fixed)
|
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Fixed)
|
||||||
sizePolicy.setHorizontalStretch(0)
|
sizePolicy.setHorizontalStretch(0)
|
||||||
sizePolicy.setVerticalStretch(0)
|
sizePolicy.setVerticalStretch(0)
|
||||||
sizePolicy.setHeightForWidth(self.file_resized_height_value.sizePolicy().hasHeightForWidth())
|
sizePolicy.setHeightForWidth(self.file_resize_height_value.sizePolicy().hasHeightForWidth())
|
||||||
self.file_resized_height_value.setSizePolicy(sizePolicy)
|
self.file_resize_height_value.setSizePolicy(sizePolicy)
|
||||||
self.file_resized_height_value.setMaximum(9999)
|
self.file_resize_height_value.setMaximum(9999)
|
||||||
self.file_resized_height_value.setProperty("value", 1000)
|
self.file_resize_height_value.setProperty("value", 1000)
|
||||||
self.file_resized_height_value.setObjectName("file_resized_height_value")
|
self.file_resize_height_value.setObjectName("file_resize_height_value")
|
||||||
self.horizontalLayout_4.addWidget(self.file_resized_height_value)
|
self.horizontalLayout_4.addWidget(self.file_resize_height_value)
|
||||||
self.px_label4 = QtWidgets.QLabel(parent=self.file_resize_height_widget)
|
self.px_label4 = QtWidgets.QLabel(parent=self.file_resize_height_widget)
|
||||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Preferred)
|
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Preferred)
|
||||||
sizePolicy.setHorizontalStretch(0)
|
sizePolicy.setHorizontalStretch(0)
|
||||||
@@ -229,12 +253,16 @@ class Ui_CoverProcessingOptionsPage(object):
|
|||||||
self.px_label2.setText(_("px"))
|
self.px_label2.setText(_("px"))
|
||||||
self.resizing.setTitle(_("Resize images if above the given size"))
|
self.resizing.setTitle(_("Resize images if above the given size"))
|
||||||
self.save_to_tags.setTitle(_("Resize images saved to tags "))
|
self.save_to_tags.setTitle(_("Resize images saved to tags "))
|
||||||
self.tags_resized_width_label.setText(_("Maximum width:"))
|
self.tags_scale_up.setText(_("Scale up"))
|
||||||
|
self.tags_scale_down.setText(_("Scale down"))
|
||||||
|
self.tags_resize_width_label.setText(_("Width:"))
|
||||||
self.px_label5.setText(_("px"))
|
self.px_label5.setText(_("px"))
|
||||||
self.tags_resized_height_label.setText(_("Maximum height:"))
|
self.tags_resize_height_label.setText(_("Height:"))
|
||||||
self.px_label6.setText(_("px"))
|
self.px_label6.setText(_("px"))
|
||||||
self.save_to_file.setTitle(_("Resize images saved to files"))
|
self.save_to_file.setTitle(_("Resize images saved to files"))
|
||||||
self.file_resized_width_label.setText(_("Maximum width:"))
|
self.file_scale_up.setText(_("Scale up"))
|
||||||
|
self.file_scale_down.setText(_("Scale down"))
|
||||||
|
self.file_resize_width_label.setText(_("Width:"))
|
||||||
self.px_label3.setText(_("px"))
|
self.px_label3.setText(_("px"))
|
||||||
self.file_resized_height_label.setText(_("Maximum height:"))
|
self.file_resize_height_label.setText(_("Height:"))
|
||||||
self.px_label4.setText(_("px"))
|
self.px_label4.setText(_("px"))
|
||||||
|
|||||||
@@ -42,36 +42,54 @@ class CoverProcessingOptionsPage(OptionsPage):
|
|||||||
self.register_setting('filter_cover_by_size')
|
self.register_setting('filter_cover_by_size')
|
||||||
self.register_setting('cover_minimum_width')
|
self.register_setting('cover_minimum_width')
|
||||||
self.register_setting('cover_minimum_height')
|
self.register_setting('cover_minimum_height')
|
||||||
self.register_setting('resize_images_saved_to_tags')
|
self.register_setting('cover_tags_scale_up')
|
||||||
self.register_setting('cover_tags_maximum_width')
|
self.register_setting('cover_tags_scale_down')
|
||||||
self.register_setting('cover_tags_maximum_height')
|
self.register_setting('cover_tags_resize_use_width')
|
||||||
self.register_setting('resize_images_saved_to_file')
|
self.register_setting('cover_tags_resize_target_width')
|
||||||
self.register_setting('cover_file_maximum_width')
|
self.register_setting('cover_tags_resize_use_height')
|
||||||
self.register_setting('cover_file_maximum_height')
|
self.register_setting('cover_tags_resize_target_height')
|
||||||
|
self.register_setting('cover_file_scale_up')
|
||||||
|
self.register_setting('cover_file_scale_down')
|
||||||
|
self.register_setting('cover_file_resize_use_width')
|
||||||
|
self.register_setting('cover_file_resize_target_width')
|
||||||
|
self.register_setting('cover_file_resize_use_height')
|
||||||
|
self.register_setting('cover_file_resize_target_height')
|
||||||
|
|
||||||
def load(self):
|
def load(self):
|
||||||
config = get_config()
|
config = get_config()
|
||||||
self.ui.filtering.setChecked(config.setting['filter_cover_by_size'])
|
self.ui.filtering.setChecked(config.setting['filter_cover_by_size'])
|
||||||
self.ui.filtering_width_value.setValue(config.setting['cover_minimum_width'])
|
self.ui.filtering_width_value.setValue(config.setting['cover_minimum_width'])
|
||||||
self.ui.filtering_height_value.setValue(config.setting['cover_minimum_height'])
|
self.ui.filtering_height_value.setValue(config.setting['cover_minimum_height'])
|
||||||
self.ui.save_to_tags.setChecked(config.setting['resize_images_saved_to_tags'])
|
self.ui.tags_scale_up.setChecked(config.setting['cover_tags_scale_up'])
|
||||||
self.ui.tags_resized_width_value.setValue(config.setting['cover_tags_maximum_width'])
|
self.ui.tags_scale_down.setChecked(config.setting['cover_tags_scale_down'])
|
||||||
self.ui.tags_resized_height_value.setValue(config.setting['cover_tags_maximum_height'])
|
self.ui.tags_resize_width_label.setChecked(config.setting['cover_tags_resize_use_width'])
|
||||||
self.ui.save_to_file.setChecked(config.setting['resize_images_saved_to_file'])
|
self.ui.tags_resize_width_value.setValue(config.setting['cover_tags_resize_target_width'])
|
||||||
self.ui.file_resized_width_value.setValue(config.setting['cover_file_maximum_width'])
|
self.ui.tags_resize_height_label.setChecked(config.setting['cover_tags_resize_use_height'])
|
||||||
self.ui.file_resized_height_value.setValue(config.setting['cover_file_maximum_height'])
|
self.ui.tags_resize_height_value.setValue(config.setting['cover_tags_resize_target_height'])
|
||||||
|
self.ui.file_scale_up.setChecked(config.setting['cover_file_scale_up'])
|
||||||
|
self.ui.file_scale_down.setChecked(config.setting['cover_file_scale_down'])
|
||||||
|
self.ui.file_resize_width_label.setChecked(config.setting['cover_file_resize_use_width'])
|
||||||
|
self.ui.file_resize_width_value.setValue(config.setting['cover_file_resize_target_width'])
|
||||||
|
self.ui.file_resize_height_label.setChecked(config.setting['cover_file_resize_use_height'])
|
||||||
|
self.ui.file_resize_height_value.setValue(config.setting['cover_file_resize_target_height'])
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
config = get_config()
|
config = get_config()
|
||||||
config.setting['filter_cover_by_size'] = self.ui.filtering.isChecked()
|
config.setting['filter_cover_by_size'] = self.ui.filtering.isChecked()
|
||||||
config.setting['cover_minimum_width'] = self.ui.filtering_width_value.value()
|
config.setting['cover_minimum_width'] = self.ui.filtering_width_value.value()
|
||||||
config.setting['cover_minimum_height'] = self.ui.filtering_height_value.value()
|
config.setting['cover_minimum_height'] = self.ui.filtering_height_value.value()
|
||||||
config.setting['resize_images_saved_to_tags'] = self.ui.save_to_tags.isChecked()
|
config.setting['cover_tags_scale_up'] = self.ui.tags_scale_up.isChecked()
|
||||||
config.setting['cover_tags_maximum_width'] = self.ui.tags_resized_width_value.value()
|
config.setting['cover_tags_scale_down'] = self.ui.tags_scale_down.isChecked()
|
||||||
config.setting['cover_tags_maximum_height'] = self.ui.tags_resized_height_value.value()
|
config.setting['cover_tags_resize_use_width'] = self.ui.tags_resize_width_label.isChecked()
|
||||||
config.setting['resize_images_saved_to_file'] = self.ui.save_to_file.isChecked()
|
config.setting['cover_tags_resize_target_width'] = self.ui.tags_resize_width_value.value()
|
||||||
config.setting['cover_file_maximum_width'] = self.ui.file_resized_width_value.value()
|
config.setting['cover_tags_resize_use_height'] = self.ui.tags_resize_height_label.isChecked()
|
||||||
config.setting['cover_file_maximum_height'] = self.ui.file_resized_height_value.value()
|
config.setting['cover_tags_resize_target_height'] = self.ui.tags_resize_height_value.value()
|
||||||
|
config.setting['cover_file_scale_up'] = self.ui.file_scale_up.isChecked()
|
||||||
|
config.setting['cover_file_scale_down'] = self.ui.file_scale_down.isChecked()
|
||||||
|
config.setting['cover_file_resize_use_width'] = self.ui.file_resize_width_label.isChecked()
|
||||||
|
config.setting['cover_file_resize_target_width'] = self.ui.file_resize_width_value.value()
|
||||||
|
config.setting['cover_file_resize_use_height'] = self.ui.file_resize_height_label.isChecked()
|
||||||
|
config.setting['cover_file_resize_target_height'] = self.ui.file_resize_height_value.value()
|
||||||
|
|
||||||
|
|
||||||
register_options_page(CoverProcessingOptionsPage)
|
register_options_page(CoverProcessingOptionsPage)
|
||||||
|
|||||||
@@ -80,12 +80,18 @@ class ImageProcessorsTest(PicardTestCase):
|
|||||||
super().setUp()
|
super().setUp()
|
||||||
self.settings = {
|
self.settings = {
|
||||||
'enabled_plugins': [],
|
'enabled_plugins': [],
|
||||||
'resize_images_saved_to_tags': True,
|
'cover_tags_scale_up': False,
|
||||||
'cover_tags_maximum_width': 500,
|
'cover_tags_scale_down': True,
|
||||||
'cover_tags_maximum_height': 500,
|
'cover_tags_resize_use_width': True,
|
||||||
'resize_images_saved_to_file': True,
|
'cover_tags_resize_target_width': 500,
|
||||||
'cover_file_maximum_width': 750,
|
'cover_tags_resize_use_height': True,
|
||||||
'cover_file_maximum_height': 750,
|
'cover_tags_resize_target_height': 500,
|
||||||
|
'cover_file_scale_up': False,
|
||||||
|
'cover_file_scale_down': True,
|
||||||
|
'cover_file_resize_use_width': True,
|
||||||
|
'cover_file_resize_target_width': 750,
|
||||||
|
'cover_file_resize_use_height': True,
|
||||||
|
'cover_file_resize_target_height': 750,
|
||||||
'save_images_to_tags': True,
|
'save_images_to_tags': True,
|
||||||
'save_images_to_files': True,
|
'save_images_to_files': True,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>518</width>
|
<width>478</width>
|
||||||
<height>285</height>
|
<height>361</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@@ -155,12 +155,44 @@
|
|||||||
<string>Resize images saved to tags </string>
|
<string>Resize images saved to tags </string>
|
||||||
</property>
|
</property>
|
||||||
<property name="checkable">
|
<property name="checkable">
|
||||||
<bool>true</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="checked">
|
<property name="checked">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="tags_scale_widget" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="tags_scale_up">
|
||||||
|
<property name="text">
|
||||||
|
<string>Scale up</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="tags_scale_down">
|
||||||
|
<property name="text">
|
||||||
|
<string>Scale down</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QWidget" name="tags_resize_width_widget" native="true">
|
<widget class="QWidget" name="tags_resize_width_widget" native="true">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||||
@@ -180,14 +212,14 @@
|
|||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="tags_resized_width_label">
|
<widget class="QCheckBox" name="tags_resize_width_label">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Maximum width:</string>
|
<string>Width:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QSpinBox" name="tags_resized_width_value">
|
<widget class="QSpinBox" name="tags_resize_width_value">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
@@ -237,14 +269,14 @@
|
|||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="tags_resized_height_label">
|
<widget class="QCheckBox" name="tags_resize_height_label">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Maximum height:</string>
|
<string>Height:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QSpinBox" name="tags_resized_height_value">
|
<widget class="QSpinBox" name="tags_resize_height_value">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
@@ -284,12 +316,44 @@
|
|||||||
<string>Resize images saved to files</string>
|
<string>Resize images saved to files</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="checkable">
|
<property name="checkable">
|
||||||
<bool>true</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="checked">
|
<property name="checked">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="file_scale_widget" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_9">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="file_scale_up">
|
||||||
|
<property name="text">
|
||||||
|
<string>Scale up</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="file_scale_down">
|
||||||
|
<property name="text">
|
||||||
|
<string>Scale down</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QWidget" name="file_resize_width_widget" native="true">
|
<widget class="QWidget" name="file_resize_width_widget" native="true">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
||||||
@@ -309,14 +373,14 @@
|
|||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="file_resized_width_label">
|
<widget class="QCheckBox" name="file_resize_width_label">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Maximum width:</string>
|
<string>Width:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QSpinBox" name="file_resized_width_value">
|
<widget class="QSpinBox" name="file_resize_width_value">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
@@ -366,14 +430,14 @@
|
|||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="file_resized_height_label">
|
<widget class="QCheckBox" name="file_resize_height_label">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Maximum height:</string>
|
<string>Height:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QSpinBox" name="file_resized_height_value">
|
<widget class="QSpinBox" name="file_resize_height_value">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
|
|||||||
Reference in New Issue
Block a user