File size: 1,959 Bytes
afc0d4c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ac16806
 
afc0d4c
 
 
 
 
 
 
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

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()