Rahatara commited on
Commit
e50d873
·
verified ·
1 Parent(s): 1e6c7b1

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +45 -0
app.py ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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([
10
+ [0.393, 0.769, 0.189],
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()