MakiAi's picture
Upload 84 files
ad8cacf verified
Raw History Blame Contribute Delete
3.27 kB
"""
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