Spaces:
Sleeping
Sleeping
| """ | |
| 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 | |