Singularity666 commited on
Commit
68724c0
1 Parent(s): c844544

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -17
app.py CHANGED
@@ -1,24 +1,54 @@
1
  import streamlit as st
2
- from main import upscale_image
3
- import base64
 
 
 
4
 
5
- def get_image_download_link(img_path, filename="upscaled_image.png"):
6
- with open(img_path, 'rb') as f:
7
- bytes = f.read()
8
- b64 = base64.b64encode(bytes).decode()
9
- href = f'<a href="data:file/octet-stream;base64,{b64}" download=\'{filename}\'>Click here to download the upscaled image</a>'
10
- return href
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
 
12
- def app():
13
  uploaded_file = st.file_uploader("Choose an image...", type="png")
14
  if uploaded_file is not None:
15
- with open("uploaded.png", "wb") as f:
16
- f.write(uploaded_file.getvalue())
17
-
18
- upscale_image("uploaded.png") # This will create "upscaled.png"
19
-
20
- st.image("upscaled.png", caption="Upscaled Image", use_column_width=True)
21
- st.markdown(get_image_download_link("upscaled.png"), unsafe_allow_html=True)
 
 
 
 
 
 
 
22
 
23
  if __name__ == "__main__":
24
- app()
 
1
  import streamlit as st
2
+ import replicate
3
+ import os
4
+ import requests
5
+ from PIL import Image
6
+ from io import BytesIO
7
 
8
+ # Set up environment variable for Replicate API Token
9
+ os.environ['REPLICATE_API_TOKEN'] = 'r8_3V5WKOBwbbuL0DQGMliP0972IAVIBo62Lmi8I' # Replace with your actual API token
10
+
11
+ def upscale_image(image_path):
12
+ # Open the image file
13
+ with open(image_path, "rb") as img_file:
14
+ # Run the GFPGAN model
15
+ output = replicate.run(
16
+ "tencentarc/gfpgan:9283608cc6b7be6b65a8e44983db012355fde4132009bf99d976b2f0896856a3",
17
+ input={"img": img_file, "version": "v1.4", "scale": 16}
18
+ )
19
+
20
+ # The output is a URI of the processed image
21
+ # We will retrieve the image data and save it
22
+ response = requests.get(output)
23
+ img = Image.open(BytesIO(response.content))
24
+
25
+ # Save the upscaled image to a BytesIO object
26
+ img_byte_arr = BytesIO()
27
+ img.save(img_byte_arr, format='PNG')
28
+ img_byte_arr = img_byte_arr.getvalue()
29
+
30
+ return img, img_byte_arr
31
+
32
+ def main():
33
+ st.title("Image Upscaling")
34
+ st.write("Upload an image and it will be upscaled.")
35
 
 
36
  uploaded_file = st.file_uploader("Choose an image...", type="png")
37
  if uploaded_file is not None:
38
+ with open("temp_img.png", "wb") as f:
39
+ f.write(uploaded_file.getbuffer())
40
+ st.success("Uploaded image successfully!")
41
+ if st.button("Upscale Image"):
42
+ img, img_bytes = upscale_image("temp_img.png")
43
+ st.image(img, caption='Upscaled Image', use_column_width=True)
44
+
45
+ # Add download button
46
+ st.download_button(
47
+ label="Download Upscaled Image",
48
+ data=img_bytes,
49
+ file_name="upscaled_image.png",
50
+ mime="image/png"
51
+ )
52
 
53
  if __name__ == "__main__":
54
+ main()