Spaces:
Sleeping
Sleeping
import io | |
from PIL import Image, ImageOps | |
import streamlit as st | |
def remove_metadata(image: Image): | |
# Convertir a modo RGB y eliminar los metadatos | |
data = io.BytesIO() | |
image.save(data, format="JPEG", quality=95, optimize=True) | |
data.seek(0) | |
return Image.open(data), data | |
def resize_image(image: Image, percentage: float): | |
# Redimensionar la imagen manteniendo la proporción | |
width, height = image.size | |
nuevo_tamaño = (int(width * percentage), int(height * percentage)) | |
imagen_redimensionada = image.resize(nuevo_tamaño, Image.Resampling.LANCZOS) | |
return imagen_redimensionada | |
def calcular_peso(data): | |
# Calcular el peso en kilobytes | |
return len(data.getvalue()) / 1024 | |
def main(): | |
st.title("Redimensionar Imagen y Remover Metadatos") | |
archivo_subido = st.file_uploader("Selecciona una imagen...", type=["jpg", "jpeg", "png"]) | |
if archivo_subido is not None: | |
imagen = Image.open(archivo_subido) | |
# Mostrar tamaño y peso de la imagen original | |
st.image(imagen, caption="Imagen Original", use_column_width=True) | |
ancho_original, alto_original = imagen.size | |
st.write(f"Tamaño de la imagen original: {ancho_original} x {alto_original} píxeles") | |
buf_original = io.BytesIO() | |
imagen.save(buf_original, format="JPEG") | |
peso_original = calcular_peso(buf_original) | |
st.write(f"Peso de la imagen original: {peso_original:.2f} KB") | |
# Seleccionar porcentaje de redimensionado | |
porcentaje = st.slider("Selecciona el porcentaje de redimensionado", 10, 100, 50) | |
# Redimensionar imagen | |
imagen_redimensionada = resize_image(imagen, porcentaje / 100) | |
# Mostrar tamaño de la imagen redimensionada | |
ancho_redimensionado, alto_redimensionado = imagen_redimensionada.size | |
st.image(imagen_redimensionada, caption="Imagen Redimensionada", use_column_width=True) | |
st.write(f"Tamaño de la imagen redimensionada: {ancho_redimensionado} x {alto_redimensionado} píxeles") | |
# Remover metadatos | |
imagen_sin_metadata, buf_sin_metadata = remove_metadata(imagen_redimensionada) | |
# Mostrar imagen redimensionada sin metadatos | |
st.image(imagen_sin_metadata, caption="Imagen Redimensionada sin Metadatos", use_column_width=True) | |
# Calcular y mostrar el peso de la imagen sin metadatos | |
peso_sin_metadata = calcular_peso(buf_sin_metadata) | |
st.write(f"Peso de la imagen sin metadatos: {peso_sin_metadata:.2f} KB") | |
# Descargar imagen sin metadatos | |
byte_im = buf_sin_metadata.getvalue() | |
st.download_button(label="Descargar Imagen", data=byte_im, file_name="imagen_redimensionada_sin_metadata.jpg", mime="image/jpeg") | |
# Firma personal al final | |
st.markdown("Hecho en MDQ con amor ❤️ por Peláez.") | |
if __name__ == "__main__": | |
main() | |