Spaces:
Running
Running
File size: 2,480 Bytes
0db0341 35a7f8f 0db0341 95fc1cb 4c45b50 95fc1cb 4c45b50 95fc1cb 0db0341 35a7f8f ad49d4a 35a7f8f 4c45b50 35a7f8f 216e8c5 35a7f8f 95fc1cb 216e8c5 95fc1cb 216e8c5 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 53 54 55 56 57 58 59 60 61 62 |
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)
# Si el formato es JPG, convertir a RGB si la imagen es RGBA o tiene transparencia
if target_format.lower() == "jpg":
img = img.convert("RGB")
# 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
# Volver a abrir la imagen convertida para que Gradio la pueda mostrar
converted_img = Image.open(output_name)
# Convertir a un formato que Gradio pueda mostrar y manejar adecuadamente
converted_img = converted_img.convert("RGB")
# Retornar la imagen convertida para visualización en Gradio y su tamaño
return converted_img, 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()
|