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 |
import os from PIL import Image def resize_image_to_min_4mp(image_path, output_path): # Cargar la imagen with Image.open(image_path) as img: width, height = img.size pixels = width * height # Mostrar las dimensiones actuales de la imagen print(f"Procesando '{image_path}': {width}x{height} píxeles, que son {pixels} píxeles en total.") # 4 megapíxeles es 4,000,000 de píxeles min_pixels = 4 * 10**6 if pixels >= min_pixels: print(f"La imagen '{image_path}' ya tiene al menos 4 megapíxeles. Se copiará sin cambios.") img.save(output_path, quality=95) # Guardar con calidad alta return # Calcular el factor de escalado necesario para llegar a 4 megapíxeles scale_factor = (min_pixels / pixels) ** 0.5 new_width = int(width * scale_factor) new_height = int(height * scale_factor) # Redimensionar la imagen resized_img = img.resize((new_width, new_height), Image.LANCZOS) # Guardar la imagen redimensionada con una alta calidad de salida resized_img.save(output_path, quality=95) print(f"Imagen redimensionada a {new_width}x{new_height} píxeles y guardada en '{output_path}'.") def process_images_in_folder(input_folder, output_folder): # Crear la carpeta de salida si no existe if not os.path.exists(output_folder): os.makedirs(output_folder) # Procesar cada archivo en la carpeta for filename in os.listdir(input_folder): if filename.lower().endswith(('.png', '.jpg', '.jpeg')): input_path = os.path.join(input_folder, filename) output_path = os.path.join(output_folder, filename) resize_image_to_min_4mp(input_path, output_path) else: print(f"'{filename}' no es una imagen soportada, se omitirá.") # Definir las carpetas de entrada y salida input_folder = 'convertir' # Carpeta que contiene las imágenes a convertir output_folder = 'redimensionadas' # Carpeta donde se guardarán las imágenes redimensionadas # Procesar las imágenes process_images_in_folder(input_folder, output_folder) # Verificación final de las imágenes procesadas for filename in os.listdir(output_folder): output_path = os.path.join(output_folder, filename) with Image.open(output_path) as img: width, height = img.size print(f"Imagen final '{filename}': {width}x{height} píxeles ({width * height} píxeles en total).") |