import os import gradio as gr import requests import json import io from gradio.components import Image from PIL import Image as PILImage, ImageDraw, ImageFont # This import may be needed if you're processing images from PIL import Image def process_image(image): # Convert PIL image to bytes to send in POST request img_bytes = io.BytesIO() image.save(img_bytes, format="JPEG") img_bytes.seek(0) url = "http://127.0.0.1:9000/deepfake_image" files = {'image': img_bytes} result = requests.post(url=url, files=files) if result.ok: json_result = result.json() if json_result.get("resultCode") == "Error": return {"resultCode": "Error", "result": "Failed to process image"} status = json_result.get("result").get("status") confidence = json_result.get("result").get("confidence") prediction = json_result.get("result").get("prediction") similarity = json_result.get("result").get("similarity") media_type = json_result.get("result").get("media_type") if status == "Not AI Generated": status_html = f'{status}' confidence_html = f'{confidence} %' else: status_html = f'{status}' confidence_html = f'{confidence} %' html = ("" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "
Evaluation FieldValue
Result{status_html}
Confidence{confidence_html}
Similarity{similarity} % matches to known AI images
Media Type{media_type}
".format(status_html=status_html, confidence_html=confidence_html, similarity=similarity, media_type=media_type)) if status == "Ok": # Update json_result with the modified process_results json_result["result"] = process_results return html else: return {"resultCode": "Error", "result": result.text} with gr.Blocks() as demo: with gr.Row(): with gr.Column(): image_input = gr.Image(type='pil') gr.Examples(['examples/1.jpg', 'examples/2.jpg', 'examples/3.jpg'], inputs=image_input) process_button = gr.Button("Process") with gr.Column(): json_output = gr.HTML() process_button.click(process_image, inputs=[image_input], outputs=[json_output]) gr.HTML('') demo.launch(server_name="0.0.0.0", server_port=7860)