asad231 commited on
Commit
39abc8d
Β·
verified Β·
1 Parent(s): a7d9550

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +54 -47
app.py CHANGED
@@ -44,54 +44,61 @@
44
  # st.markdown("πŸ”Ή **Developed for Fake News & Deepfake Detection Hackathon**")
45
 
46
 
47
- import gradio as gr
48
  import cv2
49
  import numpy as np
50
-
51
- # βœ… Image Size Limit (MB)
52
- MAX_IMAGE_SIZE_MB = 5 # 5MB se zyada allow nahi karega
53
-
54
- # βœ… Video Size Limit (MB)
55
- MAX_VIDEO_SIZE_MB = 20 # 20MB se zyada allow nahi karega
56
-
57
- # βœ… Image Processing Function
58
- def process_image(image):
59
- if image is None:
60
- return "❌ No image uploaded!"
 
 
 
 
 
 
 
61
 
62
- # βœ… Image Resize (Optional: 512x512)
63
- image = cv2.resize(image, (512, 512))
64
- return image
65
-
66
- # βœ… Video Processing Function
67
- def process_video(video_path):
68
- if video_path is None:
69
- return "❌ No video uploaded!"
70
 
71
- # βœ… Video Size Check
72
- import os
73
- file_size_mb = os.path.getsize(video_path) / (1024 * 1024)
74
- if file_size_mb > MAX_VIDEO_SIZE_MB:
75
- return f"❌ Video is too large! (Size: {file_size_mb:.2f}MB) - Limit: {MAX_VIDEO_SIZE_MB}MB"
76
-
77
- return f"βœ… Video uploaded successfully! (Size: {file_size_mb:.2f}MB)"
78
-
79
- # βœ… Gradio Interface
80
- with gr.Blocks() as app:
81
- gr.Markdown("## πŸ•΅οΈβ€β™‚οΈ Fake News & Deepfake Detection Tool")
82
-
83
- with gr.Row():
84
- img_input = gr.Image(type="numpy", label="πŸ–Ό Upload Image (Max: 5MB)")
85
- img_output = gr.Image(label="πŸ“Œ Processed Image")
86
- img_button = gr.Button("πŸ” Detect Image")
87
-
88
- img_button.click(process_image, inputs=img_input, outputs=img_output)
89
-
90
- with gr.Row():
91
- video_input = gr.File(label="πŸŽ₯ Upload Video (Max: 20MB)", file_types=[".mp4"])
92
- video_output = gr.Textbox(label="πŸ“Œ Video Status")
93
- video_button = gr.Button("πŸ” Detect Video")
94
-
95
- video_button.click(process_video, inputs=video_input, outputs=video_output)
96
-
97
- app.launch()
 
 
 
44
  # st.markdown("πŸ”Ή **Developed for Fake News & Deepfake Detection Hackathon**")
45
 
46
 
47
+ import streamlit as st
48
  import cv2
49
  import numpy as np
50
+ import tempfile
51
+ import os
52
+ from PIL import Image
53
+
54
+ def compress_image(image, quality=20):
55
+ img = Image.open(image)
56
+ img = img.convert("RGB")
57
+ temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".jpg")
58
+ img.save(temp_file.name, "JPEG", quality=quality)
59
+ return temp_file.name
60
+
61
+ def compress_video(video):
62
+ temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".mp4")
63
+ cap = cv2.VideoCapture(video)
64
+ fourcc = cv2.VideoWriter_fourcc(*'mp4v')
65
+ frame_width = int(cap.get(3) // 2)
66
+ frame_height = int(cap.get(4) // 2)
67
+ out = cv2.VideoWriter(temp_file.name, fourcc, 20.0, (frame_width, frame_height))
68
 
69
+ while cap.isOpened():
70
+ ret, frame = cap.read()
71
+ if not ret:
72
+ break
73
+ frame = cv2.resize(frame, (frame_width, frame_height))
74
+ out.write(frame)
 
 
75
 
76
+ cap.release()
77
+ out.release()
78
+ return temp_file.name
79
+
80
+ st.title("πŸ•΅οΈβ€β™‚οΈ Fake News & Deepfake Detection Tool")
81
+
82
+ st.sidebar.header("Upload your file")
83
+ option = st.sidebar.radio("Select file type", ["Image", "Video", "Text"])
84
+
85
+ if option == "Image":
86
+ uploaded_file = st.sidebar.file_uploader("Upload an image", type=["jpg", "jpeg", "png"])
87
+ if uploaded_file is not None:
88
+ compressed_path = compress_image(uploaded_file)
89
+ image = Image.open(compressed_path)
90
+ st.image(image, caption="Compressed Image", use_column_width=True)
91
+ st.success("βœ… Image uploaded and compressed successfully!")
92
+
93
+ elif option == "Video":
94
+ uploaded_file = st.sidebar.file_uploader("Upload a video", type=["mp4", "avi", "mov"])
95
+ if uploaded_file is not None:
96
+ compressed_path = compress_video(uploaded_file)
97
+ st.video(compressed_path)
98
+ st.success("βœ… Video uploaded and compressed successfully!")
99
+
100
+ elif option == "Text":
101
+ text_input = st.text_area("Enter your text for analysis")
102
+ if text_input:
103
+ st.write("πŸ” Fake news detection processing...")
104
+ st.success("βœ… Text analysis completed!")