Spaces:
Sleeping
Sleeping
File size: 3,265 Bytes
ad8cacf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
"""
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
|