generativeai's picture
Update app.py
efdf10a
import os
import gradio as gr
from services.aws_service import AwsService
from dotenv import load_dotenv
from image_crop import crop_faces
import cv2
import numpy as np
from PIL import ImageOps
load_dotenv()
def crop_photoshoot_images(photo_shoot_id):
folder = "PhotoShoots/" + str(photo_shoot_id) + "/Inputs"
files = AwsService.get_files_from_s3(os.environ.get('AWS_S3_BUCKET'), folder)
for file in files:
s3_object = AwsService.get_image_from_s3(os.environ.get('AWS_S3_BUCKET'), file['Key'])
image = ImageOps.exif_transpose(s3_object["pil"])
key = s3_object["key"]
image.save(f"{key}.jpg")
cv2_img = cv2.imread(f"{key}.jpg")
faces = crop_faces(cv2_img)
i = 1
for face in faces:
filename = f'{key}-{i}.jpg'
cv2.imwrite(filename, face)
AwsService.send_image_to_s3(filename, os.environ.get('AWS_S3_BUCKET'), f'PhotoShoots/{photo_shoot_id}/Croppeds/{key}-{i}.jpg')
os.remove(filename)
i += 1
os.remove(f"{key}.jpg")
return {"message": f"{len(files)} images cropped successfully"}
iface = gr.Interface(
fn=crop_photoshoot_images,
inputs=[gr.Textbox(lines=1, placeholder="Photo Shoot ID")],
outputs=["text"]
)
iface.launch()