import os import sys from PIL import Image from datetime import datetime def crop_image(image_path, crop_size): img = Image.open(image_path) width, height = img.size if width < crop_size or height < crop_size: print(f"Advertencia: La imagen '{image_path}' mide menos de {crop_size}x{crop_size} píxeles y no se recortará.") return None left = (width - crop_size) / 2 top = (height - crop_size) / 2 right = (width + crop_size) / 2 bottom = (height + crop_size) / 2 img_cropped = img.crop((left, top, right, bottom)) return img_cropped def process_image(image_path, crop_size, output_dir): img_cropped = crop_image(image_path, crop_size) base_name = os.path.basename(image_path) name, ext = os.path.splitext(base_name) new_name = f"{name}_crop_{crop_size}x{crop_size}{ext}" output_path = os.path.join(output_dir, new_name) img_cropped.save(output_path) print(f"Imagen guardada: {output_path}") def process_directory(directory, crop_size, output_dir): for filename in os.listdir(directory): if filename.endswith('.png'): process_image(os.path.join(directory, filename), crop_size, output_dir) def main(): if len(sys.argv) < 2: print(f"\nUso: python {sys.argv[0]} [tamaño_crop]") sys.exit(1) path = sys.argv[1] crop_size = int(sys.argv[2]) if len(sys.argv) > 2 else 2000 if not os.path.exists(path): print(f"Error: {path} no existe.") sys.exit(1) timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") output_dir = f"images_{timestamp}" os.makedirs(output_dir, exist_ok=True) if os.path.isfile(path): process_image(path, crop_size, output_dir) elif os.path.isdir(path): process_directory(path, crop_size, output_dir) else: print(f"Error: {path} no es un archivo ni un directorio válido.") sys.exit(1) if __name__ == "__main__": main()