Spaces:
Running
Running
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() | |