|
|
import os |
|
|
import argparse |
|
|
from tqdm import tqdm |
|
|
from armor import ArmorGenerator, ArmorConfig |
|
|
|
|
|
def batch_armor_images(input_dir, output_dir, strength=2.5): |
|
|
""" |
|
|
Applies Ghostprint armor to a directory of images. |
|
|
|
|
|
Args: |
|
|
input_dir (str): Directory containing the original images. |
|
|
output_dir (str): Directory to save the armored images. |
|
|
strength (float): The strength of the armor to apply (1.0 to 5.0). |
|
|
""" |
|
|
if not os.path.isdir(input_dir): |
|
|
print(f"Error: Input directory '{input_dir}' not found.") |
|
|
return |
|
|
|
|
|
os.makedirs(output_dir, exist_ok=True) |
|
|
|
|
|
|
|
|
|
|
|
armor_generator = ArmorGenerator() |
|
|
armor_config = ArmorConfig() |
|
|
|
|
|
image_files = sorted([f for f in os.listdir(input_dir) if f.lower().endswith(('.png', '.jpg', '.jpeg'))]) |
|
|
|
|
|
if not image_files: |
|
|
print(f"No images found in '{input_dir}'.") |
|
|
return |
|
|
|
|
|
print(f"Applying armor with strength {strength} to {len(image_files)} images...") |
|
|
|
|
|
for filename in tqdm(image_files, desc="Armoring images"): |
|
|
input_path = os.path.join(input_dir, filename) |
|
|
output_path = os.path.join(output_dir, filename) |
|
|
|
|
|
try: |
|
|
armor_generator.apply_to_image( |
|
|
image_path=input_path, |
|
|
out_path=output_path, |
|
|
cfg=armor_config, |
|
|
strength=strength, |
|
|
return_metrics=False |
|
|
) |
|
|
except Exception as e: |
|
|
print(f"\nFailed to process {filename}: {e}") |
|
|
|
|
|
print("Batch armoring complete.") |
|
|
print(f"Armored images saved in '{output_dir}'.") |
|
|
|
|
|
if __name__ == '__main__': |
|
|
parser = argparse.ArgumentParser(description="Batch apply Ghostprint armor to images.") |
|
|
parser.add_argument( |
|
|
'--input-dir', |
|
|
type=str, |
|
|
default='placeholder_images', |
|
|
help='Directory containing the original images.' |
|
|
) |
|
|
parser.add_argument( |
|
|
'--output-dir', |
|
|
type=str, |
|
|
default='armored_images', |
|
|
help='Directory to save the armored images.' |
|
|
) |
|
|
parser.add_argument( |
|
|
'--strength', |
|
|
type=float, |
|
|
default=2.5, |
|
|
help='Armor strength (e.g., 1.0 to 5.0). 2.5 is a good starting point.' |
|
|
) |
|
|
args = parser.parse_args() |
|
|
|
|
|
batch_armor_images(args.input_dir, args.output_dir, args.strength) |
|
|
|