|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import streamlit as st |
|
import cv2 |
|
import numpy as np |
|
import tempfile |
|
import os |
|
from PIL import Image |
|
|
|
def compress_image(image, quality=20): |
|
img = Image.open(image) |
|
img = img.convert("RGB") |
|
temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".jpg") |
|
img.save(temp_file.name, "JPEG", quality=quality) |
|
return temp_file.name |
|
|
|
def compress_video(video): |
|
temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".mp4") |
|
cap = cv2.VideoCapture(video) |
|
fourcc = cv2.VideoWriter_fourcc(*'mp4v') |
|
frame_width = int(cap.get(3) // 2) |
|
frame_height = int(cap.get(4) // 2) |
|
out = cv2.VideoWriter(temp_file.name, fourcc, 20.0, (frame_width, frame_height)) |
|
|
|
while cap.isOpened(): |
|
ret, frame = cap.read() |
|
if not ret: |
|
break |
|
frame = cv2.resize(frame, (frame_width, frame_height)) |
|
out.write(frame) |
|
|
|
cap.release() |
|
out.release() |
|
return temp_file.name |
|
|
|
st.title("π΅οΈββοΈ Fake News & Deepfake Detection Tool") |
|
|
|
st.sidebar.header("Upload your file") |
|
option = st.sidebar.radio("Select file type", ["Image", "Video", "Text"]) |
|
|
|
if option == "Image": |
|
uploaded_file = st.sidebar.file_uploader("Upload an image", type=["jpg", "jpeg", "png"]) |
|
if uploaded_file is not None: |
|
compressed_path = compress_image(uploaded_file) |
|
image = Image.open(compressed_path) |
|
st.image(image, caption="Compressed Image", use_column_width=True) |
|
st.success("β
Image uploaded and compressed successfully!") |
|
|
|
elif option == "Video": |
|
uploaded_file = st.sidebar.file_uploader("Upload a video", type=["mp4", "avi", "mov"]) |
|
if uploaded_file is not None: |
|
compressed_path = compress_video(uploaded_file) |
|
st.video(compressed_path) |
|
st.success("β
Video uploaded and compressed successfully!") |
|
|
|
elif option == "Text": |
|
text_input = st.text_area("Enter your text for analysis") |
|
if text_input: |
|
st.write("π Fake news detection processing...") |
|
st.success("β
Text analysis completed!") |
|
|