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