Rahatara commited on
Commit
9b73a59
1 Parent(s): 0ce663a

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -15
app.py CHANGED
@@ -1,6 +1,9 @@
1
  import gradio as gr
2
  import numpy as np
3
- import time
 
 
 
4
 
5
  def sepia(input_img, num_copies):
6
  sepia_filter = np.array([
@@ -8,21 +11,35 @@ def sepia(input_img, num_copies):
8
  [0.349, 0.686, 0.168],
9
  [0.272, 0.534, 0.131]
10
  ])
11
- # Normalize input image to 0-1 range
12
  input_img = input_img / 255.0
13
- sepia_img = np.dot(input_img[...,:3], sepia_filter.T)
14
- sepia_img = np.clip(sepia_img, 0, 1)
15
-
16
- # Iterate to yield multiple sepia images
17
- for _ in range(num_copies):
18
- # Simulating a delay for demonstration, you might not need this
19
- time.sleep(1)
20
- yield (sepia_img * 255).astype(np.uint8)
 
 
 
 
 
 
21
 
22
- demo = gr.Interface(fn=sepia,
23
- inputs=[gr.Image(), gr.Number()],
24
- outputs="image",
25
- title="Sepia Tone Generator")
 
 
 
 
 
 
 
 
 
26
 
27
  if __name__ == "__main__":
28
- demo.launch()
 
1
  import gradio as gr
2
  import numpy as np
3
+ import tempfile
4
+ import shutil
5
+ import os
6
+ from zipfile import ZipFile
7
 
8
  def sepia(input_img, num_copies):
9
  sepia_filter = np.array([
 
11
  [0.349, 0.686, 0.168],
12
  [0.272, 0.534, 0.131]
13
  ])
 
14
  input_img = input_img / 255.0
15
+ sepia_img = np.dot(input_img[..., :3], sepia_filter.T)
16
+ sepia_img = np.clip(sepia_img, 0, 1) * 255
17
+ sepia_imgs = [(sepia_img).astype(np.uint8) for _ in range(num_copies)]
18
+ return sepia_imgs
19
+
20
+ def zip_sepia_images(sepia_imgs):
21
+ temp_dir = tempfile.mkdtemp()
22
+ zip_path = os.path.join(temp_dir, "sepia_images.zip")
23
+ with ZipFile(zip_path, 'w') as zipf:
24
+ for i, img in enumerate(sepia_imgs):
25
+ img_path = os.path.join(temp_dir, f"sepia_image_{i}.png")
26
+ gr.utils.save_image(img_path, img)
27
+ zipf.write(img_path, os.path.basename(img_path))
28
+ return zip_path
29
 
30
+ with gr.Blocks() as demo:
31
+ with gr.Row():
32
+ input_img = gr.Image()
33
+ num_copies = gr.Number(label="Number of Copies", value=1)
34
+ gallery = gr.Gallery(label="Sepia Images")
35
+ download_btn = gr.File(label="Download ZIP", visible=False)
36
+
37
+ input_img.change(fn=lambda x: x, inputs=input_img, outputs=gallery)
38
+ num_copies.change(fn=lambda x: x, inputs=num_copies, outputs=gallery)
39
+
40
+ generate_btn = gr.Button("Generate Sepia Images")
41
+ generate_btn.click(fn=sepia, inputs=[input_img, num_copies], outputs=gallery)
42
+ generate_btn.click(fn=zip_sepia_images, inputs=gallery, outputs=download_btn)
43
 
44
  if __name__ == "__main__":
45
+ demo.launch()