Spaces:
Sleeping
Sleeping
import os | |
from PIL import Image | |
import concurrent.futures | |
# Define the directories | |
input_directory = "../original-images" | |
output_directory = "../resized-original-images-test" | |
# Ensure output directory exists | |
os.makedirs(output_directory, exist_ok=True) | |
def resize_image(input_path, output_path): | |
with Image.open(input_path) as img: | |
# Calculate the current megapixels | |
current_megapixels = (img.width * img.height) / 1_000_000 | |
max_megapixels = 10 | |
if current_megapixels > max_megapixels: | |
# Calculate the scaling factor to reduce the image to 10 megapixels | |
scaling_factor = (max_megapixels / current_megapixels) ** 0.5 | |
new_size = (int(img.width * scaling_factor), int(img.height * scaling_factor)) | |
# Resize the image | |
resized_img = img.resize(new_size, Image.LANCZOS) | |
# Save the resized image | |
resized_img.save(output_path) | |
else: | |
# If the image is smaller than 10 megapixels, save it as is | |
img.save(output_path) | |
def main(): | |
# Iterate over the input directory | |
with concurrent.futures.ThreadPoolExecutor(max_workers=16) as executor: | |
for filename in os.listdir(input_directory): | |
if filename.endswith(('.png', '.jpg', '.jpeg')): | |
input_path = os.path.join(input_directory, filename) | |
output_path = os.path.join(output_directory, filename) | |
# Check if the output file already exists | |
if not os.path.exists(output_path): | |
executor.submit(resize_image, input_path, output_path) | |
print(f"Submitted {filename} for resizing.") | |
else: | |
print(f"Skipped {filename}, already exists in {output_directory}") | |
print("All images have been resized and saved to the output directory.") | |
if __name__ == "__main__": | |
main() |