-
Notifications
You must be signed in to change notification settings - Fork 0
/
covid19_gui.py
114 lines (88 loc) · 3.38 KB
/
covid19_gui.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
from flask import Flask, render_template, request, send_file
from reportlab.lib.pagesizes import letter
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer
from PIL import Image
import tensorflow as tf
import numpy as np
app = Flask(__name__)
# Load your model here
model = tf.keras.models.load_model('Covid_19_Detection.h5')
def prediction(img_path):
img = Image.open(img_path).convert("RGB")
img = img.resize((224, 224))
img = tf.keras.utils.img_to_array(img)
img = np.expand_dims(img, axis=0)
results = model.predict(img)
return results
@app.route('/')
def home():
return render_template('home.html')
@app.route('/about')
def about():
return render_template('about.html')
@app.route('/photos')
def photos():
return render_template('photos.html')
@app.route('/upload', methods=['GET', 'POST'])
def upload_image():
if request.method == 'POST':
# Assuming you have a form field named 'file'
uploaded_file = request.files['file']
if uploaded_file:
img_path = f"uploads/{uploaded_file.filename}"
uploaded_file.save(img_path)
results = prediction(img_path)
if results[0][0] == 0:
result_text = 'Positive For Covid-19'
else:
result_text = 'Negative For Covid-19'
return render_template('result.html', image_path=img_path, result=result_text)
return render_template('upload.html')
@app.route('/download', methods=['POST'])
def download_report():
first_name = request.form.get('first_name')
last_name = request.form.get('last_name')
phone_number = request.form.get('phone_number')
address = request.form.get('address')
result = request.form.get('result')
date = request.form.get('date')
details=request.form.get('details')
# Generate PDF
pdf_path = generate_pdf(first_name, last_name, phone_number, address, result, date ,details)
# Return PDF for download
return send_file(pdf_path, as_attachment=True)
def generate_pdf(first_name, last_name, phone_number, address, result, date ,details):
pdf_path = f'report_{first_name}_{last_name}.pdf'
# Create a PDF document
doc = SimpleDocTemplate(pdf_path, pagesize=letter)
styles = getSampleStyleSheet()
# Define custom styles
title_style = ParagraphStyle(
'Title',
parent=styles['Heading1'],
fontSize=18,
textColor=colors.blue,
spaceAfter=12
)
normal_style = ParagraphStyle(
'Normal',
parent=styles['Normal'],
spaceAfter=12
)
# Build the content
content = []
content.append(Paragraph('COVID-19 Test Report', title_style))
content.append(Spacer(1, 12))
content.append(Paragraph(f"Name: {first_name} {last_name}", normal_style))
content.append(Paragraph(f"Phone Number: {phone_number}", normal_style))
content.append(Paragraph(f"Address: {address}", normal_style))
content.append(Paragraph(f"<h1>Result: {result}</h1>", normal_style))
content.append(Paragraph(f"Date: {date}", normal_style))
content.append(Paragraph(f"Details: {details}", normal_style))
# Add content to the PDF document
doc.build(content)
return pdf_path
if __name__ == '__main__':
app.run(debug=True)