Spaces:
Sleeping
Sleeping
File size: 2,885 Bytes
4136906 ece9fff 4136906 ece9fff 4136906 ece9fff 2f7f304 ece9fff 4136906 ece9fff 2f7f304 ece9fff 2f7f304 4136906 ece9fff 4136906 2f7f304 ece9fff 4136906 ece9fff 4136906 2f7f304 ece9fff 4136906 ece9fff 4136906 ece9fff 4136906 ece9fff 4136906 d17d91d e9eb131 4136906 |
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 |
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()
|