MakiAi's picture
Upload 84 files
ad8cacf verified
"""
Batch processing functionality for SVG vectorization.
"""
import os
import glob
from loguru import logger
from .core import convert_image_to_svg
from .params import DEFAULT_PARAMS
def batch_convert_folder(input_folder, output_folder, params=None):
"""
Convert all images in a folder to SVG.
Args:
input_folder (str): Input directory containing images
output_folder (str): Output directory for SVG files
params (dict, optional): Conversion parameters
Returns:
list: Paths to generated SVG files
"""
# Create output folder if it doesn't exist
if not os.path.exists(output_folder):
os.makedirs(output_folder)
logger.info(f"Created output folder: {output_folder}")
# Image file extensions to process
image_extensions = ('*.jpg', '*.jpeg', '*.png', '*.bmp', '*.tiff')
# List for converted files
converted_files = []
# List all image files
image_files = []
for ext in image_extensions:
image_files.extend(glob.glob(os.path.join(input_folder, ext)))
image_files.extend(glob.glob(os.path.join(input_folder, ext.upper())))
total_files = len(image_files)
logger.info(f"Found {total_files} images to convert")
# Process each image
for i, img_path in enumerate(image_files, 1):
# Generate output filename
file_name = os.path.splitext(os.path.basename(img_path))[0]
output_path = os.path.join(output_folder, f"{file_name}.svg")
logger.info(f"Processing {i}/{total_files}: {img_path}")
# Convert image to SVG
result = convert_image_to_svg(img_path, output_path, params)
if result:
converted_files.append(result)
logger.info(f"Batch processing complete. Success: {len(converted_files)}/{total_files}")
return converted_files
def process_images_to_svg(image_paths, output_folder, params=None):
"""
Convert multiple images to SVG.
Args:
image_paths (list): List of input image paths
output_folder (str): Output directory for SVG files
params (dict, optional): Conversion parameters
Returns:
list: Paths to generated SVG files
"""
# Create output folder if it doesn't exist
if not os.path.exists(output_folder):
os.makedirs(output_folder)
logger.info(f"Created output folder: {output_folder}")
converted_files = []
total_files = len(image_paths)
# Use default parameters if none provided
if params is None:
params = DEFAULT_PARAMS.copy()
for i, img_path in enumerate(image_paths, 1):
# Generate output filename
file_name = os.path.splitext(os.path.basename(img_path))[0]
output_path = os.path.join(output_folder, f"{file_name}.svg")
logger.info(f"Processing {i}/{total_files}: {img_path}")
# Convert image to SVG
result = convert_image_to_svg(img_path, output_path, params)
if result:
converted_files.append(result)
logger.info(f"Processing complete. Success: {len(converted_files)}/{total_files}")
return converted_files