File size: 2,014 Bytes
0db0341
 
 
35a7f8f
0db0341
95fc1cb
 
4c45b50
95fc1cb
 
4c45b50
95fc1cb
 
 
0db0341
35a7f8f
ad49d4a
35a7f8f
 
 
4c45b50
35a7f8f
 
 
 
95fc1cb
 
 
4c45b50
95fc1cb
0db0341
bd00297
0db0341
 
35a7f8f
 
 
0db0341
35a7f8f
95fc1cb
 
 
 
 
 
 
35a7f8f
95fc1cb
 
0db0341
 
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
50
51
52
import gradio as gr
from PIL import Image
import os
import tempfile

def get_image_info(image):
    # Obtener el tamaño del archivo en KB
    file_size = os.path.getsize(image.name) / 1024  # Convertir a KB
    
    # Abrir la imagen para mostrarla
    img = Image.open(image)
    
    return img, f"Tamaño del archivo: {file_size:.2f} KB"

def convert_image_format(image, target_format):
    with tempfile.TemporaryDirectory() as tmpdirname:
        # Crear una ruta para el archivo de salida en el directorio temporal
        output_name = os.path.join(tmpdirname, f"output_image.{target_format.lower()}")

        # Abrir la imagen con PIL
        img = Image.open(image)

        # Guardar la imagen en el formato deseado
        img.save(output_name, format=target_format.upper())

        # Calcular el tamaño del nuevo archivo
        file_size = os.path.getsize(output_name) / 1024  # Convertir a KB

        # Devolver la ruta del archivo convertido y su tamaño
        return output_name, f"Tamaño del archivo convertido: {file_size:.2f} KB"

# Interfaz de Gradio
with gr.Blocks() as demo:
    gr.Markdown("### Conversor de formatos de imagen")

    image_input = gr.File(label="Sube tu imagen", file_types=['image'])
    format_dropdown = gr.Dropdown(label="Selecciona el formato de salida", choices=["jpg", "png", "webp"], value="webp")
    convert_button = gr.Button("Convertir")

    # Mostrar la imagen original y su tamaño
    image_output = gr.Image(label="Imagen Original")
    size_output = gr.Text(label="Información del Archivo")

    # Mostrar la imagen convertida y su tamaño
    converted_image_output = gr.Image(label="Imagen Convertida")
    converted_size_output = gr.Text(label="Información del Archivo Convertido")

    image_input.change(fn=get_image_info, inputs=image_input, outputs=[image_output, size_output])
    convert_button.click(fn=convert_image_format, inputs=[image_input, format_dropdown], outputs=[converted_image_output, converted_size_output])

demo.launch()