RAGBOT / gallery.py
Rahatara's picture
Rename app.py to gallery.py
249cb0b verified
raw
history blame
1.61 kB
import gradio as gr
import numpy as np
import tempfile
import shutil
import os
from zipfile import ZipFile
def sepia(input_img, num_copies):
sepia_filter = np.array([
[0.393, 0.769, 0.189],
[0.349, 0.686, 0.168],
[0.272, 0.534, 0.131]
])
input_img = input_img / 255.0
sepia_img = np.dot(input_img[..., :3], sepia_filter.T)
sepia_img = np.clip(sepia_img, 0, 1) * 255
sepia_imgs = [(sepia_img).astype(np.uint8) for _ in range(num_copies)]
return sepia_imgs
def zip_sepia_images(sepia_imgs):
temp_dir = tempfile.mkdtemp()
zip_path = os.path.join(temp_dir, "sepia_images.zip")
with ZipFile(zip_path, 'w') as zipf:
for i, img in enumerate(sepia_imgs):
img_path = os.path.join(temp_dir, f"sepia_image_{i}.png")
gr.utils.save_image(img_path, img)
zipf.write(img_path, os.path.basename(img_path))
return zip_path
with gr.Blocks() as demo:
with gr.Row():
input_img = gr.Image()
num_copies = gr.Number(label="Number of Copies", value=1)
gallery = gr.Gallery(label="Sepia Images")
download_btn = gr.File(label="Download ZIP", visible=True)
input_img.change(fn=lambda x: x, inputs=input_img, outputs=gallery)
num_copies.change(fn=lambda x: x, inputs=num_copies, outputs=gallery)
generate_btn = gr.Button("Generate Sepia Images")
generate_btn.click(fn=sepia, inputs=[input_img, num_copies], outputs=gallery)
generate_btn.click(fn=zip_sepia_images, inputs=gallery, outputs=download_btn)
if __name__ == "__main__":
demo.launch()