Marcepelaez commited on
Commit
06f070a
1 Parent(s): 19a5f57
Files changed (1) hide show
  1. app.py +69 -0
app.py ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from PIL import Image, ImageOps, ImageEnhance
2
+ import gradio as gr
3
+ import numpy as np
4
+
5
+ # Función para transformar negativo a positivo ajustando el balance de color
6
+ def negativo_a_positivo_fotografico(image):
7
+ # Convertir la imagen a modo RGB si no lo está
8
+ if image.mode != "RGB":
9
+ image = image.convert("RGB")
10
+
11
+ # Invertir los colores de la imagen (convertir negativo a positivo)
12
+ image_invertida = ImageOps.invert(image)
13
+
14
+ # Mejorar la saturación y el brillo para corregir la apariencia típica de los negativos
15
+ image_corregida = ImageEnhance.Color(image_invertida).enhance(1.5) # Ajustar la saturación
16
+ image_corregida = ImageEnhance.Brightness(image_corregida).enhance(1.2) # Ajustar el brillo
17
+
18
+ return image_corregida
19
+
20
+ # Función original para imágenes digitales negativas
21
+ def negativo_a_positivo(image):
22
+ # Convertir la imagen a modo RGB si no lo está
23
+ if image.mode != "RGB":
24
+ image = image.convert("RGB")
25
+
26
+ # Invertir los colores de la imagen (transformar negativo a positivo)
27
+ image_positivo = ImageOps.invert(image)
28
+
29
+ return image_positivo
30
+
31
+ # Interfaz para Gradio con selección de tipo de imagen y ajustes de brillo y saturación
32
+ def interfaz(image, tipo_negativo, brillo, saturacion, contraste, nitidez):
33
+ # Convertir la imagen a un formato adecuado para Pillow
34
+ pil_image = Image.fromarray(image)
35
+
36
+ # Elegir el tipo de conversión según la selección del usuario
37
+ if tipo_negativo == "Negativo Digital":
38
+ image_positivo = negativo_a_positivo(pil_image)
39
+ else:
40
+ image_positivo = negativo_a_positivo_fotografico(pil_image)
41
+
42
+ # Aplicar ajustes de brillo, saturación, contraste y nitidez
43
+ image_positivo = ImageEnhance.Brightness(image_positivo).enhance(brillo)
44
+ image_positivo = ImageEnhance.Color(image_positivo).enhance(saturacion)
45
+ image_positivo = ImageEnhance.Contrast(image_positivo).enhance(contraste)
46
+ image_positivo = ImageEnhance.Sharpness(image_positivo).enhance(nitidez)
47
+
48
+ # Devolver la imagen transformada en formato de array para Gradio
49
+ return np.array(image_positivo)
50
+
51
+ # Crear el Space de Hugging Face con Gradio
52
+ demo = gr.Interface(
53
+ fn=interfaz,
54
+ inputs=[
55
+ gr.Image(type="numpy", label="Sube o captura una imagen en negativo"),
56
+ gr.Radio(choices=["Negativo Digital", "Negativo de Rollo Fotográfico"], label="Tipo de Negativo"),
57
+ gr.Slider(0.5, 2.0, value=1.0, label="Ajuste de Brillo"),
58
+ gr.Slider(0.5, 2.0, value=1.0, label="Ajuste de Saturación"),
59
+ gr.Slider(0.5, 2.0, value=1.0, label="Ajuste de Contraste"),
60
+ gr.Slider(0.5, 2.0, value=1.0, label="Ajuste de Nitidez")
61
+ ],
62
+ outputs="image",
63
+ live=True,
64
+ title="Transforma Negativos en Positivos",
65
+ description="Carga una imagen de negativo (desde archivo o cámara) y ajusta el brillo, saturación, contraste y nitidez para obtener el mejor resultado."
66
+ )
67
+
68
+ # Ejecutar la aplicación de Gradio
69
+ demo.launch()