Marcepelaez commited on
Commit
ece9fff
verified
1 Parent(s): a040223
Files changed (1) hide show
  1. app.py +36 -20
app.py CHANGED
@@ -1,44 +1,60 @@
1
  import io
 
2
  from PIL import Image, ImageOps
3
  import streamlit as st
4
 
5
  def remove_metadata(image: Image):
6
- # Convertir a modo RGB y eliminar la metadata
7
  data = io.BytesIO()
8
  image.save(data, format="JPEG", quality=95, optimize=True)
9
  data.seek(0)
10
- return Image.open(data)
11
 
12
  def resize_image(image: Image, percentage: float):
13
  # Redimensionar la imagen manteniendo la proporci贸n
14
  width, height = image.size
15
- new_size = (int(width * percentage), int(height * percentage))
16
- resized_image = image.resize(new_size, Image.Resampling.LANCZOS) # Usar LANCZOS en lugar de ANTIALIAS
17
- return resized_image
 
 
 
 
18
 
19
  def main():
20
- st.title("Image Resize and Metadata Remover")
21
-
22
- uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"])
 
 
 
 
 
23
 
24
- if uploaded_file is not None:
25
- image = Image.open(uploaded_file)
 
 
 
26
 
27
- st.image(image, caption="Original Image", use_column_width=True)
28
 
29
- percentage = st.slider("Select resize percentage", 10, 100, 50)
 
30
 
31
- resized_image = resize_image(image, percentage / 100)
32
- resized_image_no_metadata = remove_metadata(resized_image)
33
 
34
- st.image(resized_image_no_metadata, caption="Resized Image without Metadata", use_column_width=True)
 
35
 
36
- # Para permitir descargar la imagen
37
- buf = io.BytesIO()
38
- resized_image_no_metadata.save(buf, format="JPEG", quality=85)
39
- byte_im = buf.getvalue()
40
 
41
- st.download_button(label="Download Image", data=byte_im, file_name="resized_image.jpg", mime="image/jpeg")
 
 
42
 
43
  # Firma personal al final
44
  st.markdown("Hecho en MDQ con amor 鉂わ笍 por Pel谩ez.")
 
1
  import io
2
+ import os
3
  from PIL import Image, ImageOps
4
  import streamlit as st
5
 
6
  def remove_metadata(image: Image):
7
+ # Convertir a modo RGB y eliminar los metadatos
8
  data = io.BytesIO()
9
  image.save(data, format="JPEG", quality=95, optimize=True)
10
  data.seek(0)
11
+ return Image.open(data), data
12
 
13
  def resize_image(image: Image, percentage: float):
14
  # Redimensionar la imagen manteniendo la proporci贸n
15
  width, height = image.size
16
+ nuevo_tama帽o = (int(width * percentage), int(height * percentage))
17
+ imagen_redimensionada = image.resize(nuevo_tama帽o, Image.Resampling.LANCZOS) # Usar LANCZOS en lugar de ANTIALIAS
18
+ return imagen_redimensionada
19
+
20
+ def calcular_peso(data):
21
+ # Calcular el peso en kilobytes
22
+ return len(data.getvalue()) / 1024
23
 
24
  def main():
25
+ st.title("Redimensionar Imagen y Remover Metadatos")
26
+
27
+ archivo_subido = st.file_uploader("Selecciona una imagen...", type=["jpg", "jpeg", "png"])
28
+
29
+ if archivo_subido is not None:
30
+ imagen = Image.open(archivo_subido)
31
+
32
+ st.image(imagen, caption="Imagen Original", use_column_width=True)
33
 
34
+ # Mostrar peso de la imagen original
35
+ buf_original = io.BytesIO()
36
+ imagen.save(buf_original, format="JPEG")
37
+ peso_original = calcular_peso(buf_original)
38
+ st.write(f"Peso de la imagen original: {peso_original:.2f} KB")
39
 
40
+ porcentaje = st.slider("Selecciona el porcentaje de redimensionado", 10, 100, 50)
41
 
42
+ # Redimensionar imagen
43
+ imagen_redimensionada = resize_image(imagen, porcentaje / 100)
44
 
45
+ # Remover metadatos
46
+ imagen_sin_metadata, buf_sin_metadata = remove_metadata(imagen_redimensionada)
47
 
48
+ # Mostrar imagen redimensionada sin metadatos
49
+ st.image(imagen_sin_metadata, caption="Imagen Redimensionada sin Metadatos", use_column_width=True)
50
 
51
+ # Calcular y mostrar el peso de la imagen sin metadatos
52
+ peso_sin_metadata = calcular_peso(buf_sin_metadata)
53
+ st.write(f"Peso de la imagen sin metadatos: {peso_sin_metadata:.2f} KB")
 
54
 
55
+ # Descargar imagen sin metadatos
56
+ byte_im = buf_sin_metadata.getvalue()
57
+ st.download_button(label="Descargar Imagen", data=byte_im, file_name="imagen_redimensionada_sin_metadata.jpg", mime="image/jpeg")
58
 
59
  # Firma personal al final
60
  st.markdown("Hecho en MDQ con amor 鉂わ笍 por Pel谩ez.")