import io from PIL import Image, ImageOps import streamlit as st def remove_metadata(image: Image): # Convertir a modo RGB y eliminar la metadata data = io.BytesIO() image.save(data, format="JPEG", quality=95, optimize=True) data.seek(0) return Image.open(data) def resize_image(image: Image, percentage: float): # Redimensionar la imagen manteniendo la proporción width, height = image.size new_size = (int(width * percentage), int(height * percentage)) resized_image = image.resize(new_size, Image.Resampling.LANCZOS) # Usar LANCZOS en lugar de ANTIALIAS return resized_image def main(): st.title("Image Resize and Metadata Remover") uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"]) if uploaded_file is not None: image = Image.open(uploaded_file) st.image(image, caption="Original Image", use_column_width=True) percentage = st.slider("Select resize percentage", 10, 100, 50) resized_image = resize_image(image, percentage / 100) resized_image_no_metadata = remove_metadata(resized_image) st.image(resized_image_no_metadata, caption="Resized Image without Metadata", use_column_width=True) # Para permitir descargar la imagen buf = io.BytesIO() resized_image_no_metadata.save(buf, format="JPEG", quality=85) byte_im = buf.getvalue() st.download_button(label="Download Image", data=byte_im, file_name="resized_image.jpg", mime="image/jpeg") # Firma personal al final st.markdown("Hecho en MDQ con amor ❤️ por Peláez.") if __name__ == "__main__": main()