import gradio as gr from PIL import Image import os import tempfile def converter_imagens(caminhos_imagens, altura_max, largura_max): arquivos_convertidos = [] for caminho_imagem in caminhos_imagens: img = Image.open(caminho_imagem).convert("RGBA") # Garante que a imagem tenha um canal alfa largura_orig, altura_orig = img.size # Define as novas dimensões respeitando os limites if altura_orig > altura_max or largura_orig > largura_max: if altura_orig / altura_max > largura_orig / largura_max: nova_altura = altura_max nova_largura = int((nova_altura / altura_orig) * largura_orig) else: nova_largura = largura_max nova_altura = int((nova_largura / largura_orig) * altura_orig) else: nova_largura, nova_altura = largura_orig, altura_orig img = img.resize((nova_largura, nova_altura), Image.LANCZOS) # Define o caminho do arquivo convertido com o mesmo nome, mas com a extensão .webp nome_base = os.path.splitext(os.path.basename(caminho_imagem))[0] arquivo_temp = tempfile.NamedTemporaryFile(delete=False, suffix=".webp", prefix=nome_base + "_") img.save(arquivo_temp, format='WEBP') arquivo_temp.close() arquivos_convertidos.append(arquivo_temp.name) return arquivos_convertidos interface = gr.Interface( fn=converter_imagens, inputs=[ gr.Files(type="filepath", label="Carregar Imagens"), gr.Number(label="Altura Máxima (px) Max Height", value=100, precision=0), gr.Number(label="Largura Máxima (px) Max Width", value=200, precision=0) ], outputs=gr.Files(label="Imagens Convertidas"), title="Conversor de Imagens para .webp", description="Carregue imagens para convertê-las para o formato .webp com altura e largura máximas personalizadas." ) interface.launch()