Closer to feature parity - missing merge still

This commit is contained in:
2025-05-12 23:03:26 +02:00
parent 81d8404576
commit 528d9be47f
6 changed files with 54 additions and 62 deletions

View File

@@ -33,6 +33,7 @@ def save_image_variants(
jpg_quality: int,
output_filename_pattern_tokens: Dict[str, Any], # Must include 'output_base_directory': Path and 'asset_name': str
output_filename_pattern: str,
resolution_threshold_for_jpg: Optional[int] = None, # Added
# Consider adding ipu or relevant parts of it if not importing globally
) -> List[Dict[str, Any]]:
"""
@@ -113,8 +114,10 @@ def save_image_variants(
else:
logger.error(f"Unsupported target bit depth: {target_bit_depth}. Defaulting to 8-bit format.")
output_ext = output_format_8bit.lstrip('.').lower()
current_output_ext = output_ext # Store the initial extension based on bit depth
logger.info(f"SaveImageVariants: Determined target bit depth: {target_bit_depth}, Output format: {output_ext} for map type {base_map_type}")
logger.info(f"SaveImageVariants: Determined target bit depth: {target_bit_depth}, Initial output format: {current_output_ext} for map type {base_map_type}")
# 4. Generate and Save Resolution Variants
# Sort resolutions by max dimension descending
@@ -167,7 +170,16 @@ def save_image_variants(
current_tokens = output_filename_pattern_tokens.copy()
current_tokens['maptype'] = base_map_type
current_tokens['resolution'] = res_key
current_tokens['ext'] = output_ext
# Determine final extension for this variant, considering JPG threshold
final_variant_ext = current_output_ext
if target_bit_depth == 8 and resolution_threshold_for_jpg is not None and \
max(target_w_res, target_h_res) > resolution_threshold_for_jpg and \
current_output_ext == 'png': # Only convert if current 8-bit is PNG
final_variant_ext = 'jpg'
logger.info(f"SaveImageVariants: Overriding 8-bit PNG to JPG for {base_map_type} {res_key} due to resolution {max(target_w_res, target_h_res)}px > threshold {resolution_threshold_for_jpg}px.")
current_tokens['ext'] = final_variant_ext
try:
# Replace placeholders in the pattern
@@ -196,11 +208,11 @@ def save_image_variants(
# Prepare Save Parameters
save_params_cv2 = []
if output_ext == 'jpg':
if final_variant_ext == 'jpg': # Check against final_variant_ext
save_params_cv2.append(cv2.IMWRITE_JPEG_QUALITY)
save_params_cv2.append(jpg_quality)
logger.debug(f"SaveImageVariants: Using JPG quality: {jpg_quality} for {base_map_type} {res_key}")
elif output_ext == 'png':
elif final_variant_ext == 'png': # Check against final_variant_ext
save_params_cv2.append(cv2.IMWRITE_PNG_COMPRESSION)
save_params_cv2.append(png_compression_level)
logger.debug(f"SaveImageVariants: Using PNG compression level: {png_compression_level} for {base_map_type} {res_key}")
@@ -237,7 +249,7 @@ def save_image_variants(
saved_file_details.append({
'path': str(output_path),
'resolution_key': res_key,
'format': output_ext,
'format': final_variant_ext, # Log the actual saved format
'bit_depth': target_bit_depth,
'dimensions': (target_w_res, target_h_res)
})