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