Spaces:
Runtime error
Runtime error
File size: 3,142 Bytes
0db0341 4dc3d40 0db0341 35a7f8f 0db0341 51c8f60 4c45b50 95fc1cb 3ef5903 35a7f8f 51c8f60 e3671eb 51c8f60 3ef5903 216e8c5 51c8f60 e3671eb 51c8f60 3ef5903 51c8f60 4dc3d40 51c8f60 e3671eb 51c8f60 3ef5903 4dc3d40 e3671eb 4dc3d40 3ef5903 51c8f60 e3671eb 0db0341 51c8f60 35a7f8f 51c8f60 e3671eb 95fc1cb e3671eb 35a7f8f e3671eb 4dc3d40 e3671eb 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 63 64 65 66 67 68 69 70 71 72 73 74 75 |
import gradio as gr
from PIL import Image
import os
import tempfile
def optimize_image(image):
img = Image.open(image)
original_size = os.path.getsize(image.name) / 1024 # tama帽o en KB
with tempfile.TemporaryDirectory() as tmpdirname:
lossless_output_path = os.path.join(tmpdirname, "lossless.png")
img.save(lossless_output_path, format="PNG", optimize=True)
lossless_size = os.path.getsize(lossless_output_path) / 1024
lossless_img = Image.open(lossless_output_path)
lossless_diff = original_size - lossless_size
lossy_output_path = os.path.join(tmpdirname, "lossy.jpg")
img.save(lossy_output_path, format="JPEG", quality=50, optimize=True)
lossy_size = os.path.getsize(lossy_output_path) / 1024
lossy_img = Image.open(lossy_output_path)
lossy_diff = original_size - lossy_size
reduced_output_path = os.path.join(tmpdirname, "reduced_resolution.jpg")
reduced_img = img.resize((img.width // 2, img.height // 2), Image.LANCZOS)
reduced_img.save(reduced_output_path, format="JPEG", quality=85, optimize=True)
reduced_size = os.path.getsize(reduced_output_path) / 1024
reduced_img = Image.open(reduced_output_path)
reduced_diff = original_size - reduced_size
webp_lossy_output_path = os.path.join(tmpdirname, "lossy.webp")
img.save(webp_lossy_output_path, format="WEBP", quality=50, optimize=True)
webp_lossy_size = os.path.getsize(webp_lossy_output_path) / 1024
webp_lossy_img = Image.open(webp_lossy_output_path)
webp_lossy_diff = original_size - webp_lossy_size
return [
lossless_img, f"Sin p茅rdida: {lossless_size:.2f} KB (diferencia: {-lossless_diff:.2f} KB)",
lossy_img, f"Con p茅rdida: {lossy_size:.2f} KB (diferencia: {-lossy_diff:.2f} KB)",
reduced_img, f"Reducci贸n de resoluci贸n: {reduced_size:.2f} KB (diferencia: {-reduced_diff:.2f} KB)",
webp_lossy_img, f"WebP con p茅rdida: {webp_lossy_size:.2f} KB (diferencia: {-webp_lossy_diff:.2f} KB)"
]
with gr.Blocks() as demo:
gr.Markdown("### Optimizaci贸n de im谩genes para la web")
image_input = gr.File(label="Sube tu imagen", file_types=['image'])
optimize_button = gr.Button("Optimizar")
with gr.Row():
optimized_output1 = gr.Image(label="Optimizaci贸n sin p茅rdida")
optimized_size1 = gr.Text()
optimized_output2 = gr.Image(label="Optimizaci贸n con p茅rdida")
optimized_size2 = gr.Text()
optimized_output3 = gr.Image(label="Reducci贸n de resoluci贸n")
optimized_size3 = gr.Text()
optimized_output4 = gr.Image(label="Optimizaci贸n WebP con p茅rdida")
optimized_size4 = gr.Text()
optimize_button.click(
fn=optimize_image,
inputs=image_input,
outputs=[
optimized_output1, optimized_size1,
optimized_output2, optimized_size2,
optimized_output3, optimized_size3,
optimized_output4, optimized_size4
]
)
demo.launch()
|