|
<!DOCTYPE html> |
|
<html lang="en"> |
|
|
|
<head> |
|
<meta charset="UTF-8"> |
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
<meta http-equiv="X-UA-Compatible" content="ie=edge"> |
|
<title>Kidney Disease Classification</title> |
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" |
|
integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous"> |
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" /> |
|
<style> |
|
body { |
|
background-color: #eff2f9; |
|
} |
|
|
|
.iupload h3 { |
|
color: #1b2d6b; |
|
font-size: 30px; |
|
font-weight: 700; |
|
} |
|
|
|
.img-part { |
|
height: 300px; |
|
width: 300px; |
|
margin: 0px auto; |
|
} |
|
|
|
.image-part { |
|
height: 300px; |
|
width: 300px; |
|
border: 1px solid #1b2d6b; |
|
} |
|
|
|
.image-part img { |
|
position: absolute; |
|
height: 300px; |
|
width: 300px; |
|
display: none; |
|
padding: 5px; |
|
} |
|
|
|
.image-part #video { |
|
display: block; |
|
height: 300px; |
|
width: 300px; |
|
padding: 5px; |
|
} |
|
|
|
.res-part { |
|
border: 1px solid #dedede; |
|
margin-left: 20px; |
|
height: 310px; |
|
width: 100%; |
|
padding: 5px; |
|
margin: 0px auto; |
|
overflow: auto; |
|
} |
|
|
|
.res-part2 { |
|
border: 1px solid #dedede; |
|
height: 310px; |
|
width: 100%; |
|
padding: 5px; |
|
margin: 0px auto; |
|
} |
|
|
|
.resp-img { |
|
height: 298px; |
|
width: 233px; |
|
margin: 0px auto; |
|
} |
|
|
|
.jsonRes { |
|
margin-left: 30px; |
|
} |
|
|
|
#send { |
|
cursor: pointer; |
|
} |
|
|
|
.btn-part { |
|
width: 325px; |
|
} |
|
|
|
textarea, |
|
select, |
|
.form-control, |
|
.custom-select, |
|
button.btn, |
|
.btn-primary, |
|
input[type="text"], |
|
input[type="url"], |
|
.uneditable-input { |
|
border: 1px solid #363e75; |
|
outline: 0 !important; |
|
border-radius: 0px; |
|
box-shadow: none; |
|
-webkit-box-shadow: none; |
|
-moz-box-shadow: none; |
|
} |
|
|
|
textarea:focus, |
|
select:focus, |
|
.form-control:focus, |
|
.btn:focus, |
|
.btn-primary:focus, |
|
.custom-select:focus, |
|
input[type="text"]:focus, |
|
.uneditable-input:focus { |
|
border: 1px solid #007bff; |
|
outline: 0 !important; |
|
border-radius: 0px; |
|
box-shadow: none; |
|
-webkit-box-shadow: none; |
|
-moz-box-shadow: none; |
|
} |
|
|
|
#loading { |
|
position: fixed; |
|
left: 0px; |
|
top: 0px; |
|
width: 100%; |
|
height: 100%; |
|
z-index: 9999999999; |
|
overflow: hidden; |
|
background: rgba(255, 255, 255, 0.7); |
|
} |
|
|
|
.loader { |
|
border: 8px solid #f3f3f3; |
|
border-top: 8px solid #363e75; |
|
border-radius: 50%; |
|
width: 60px; |
|
height: 60px; |
|
left: 50%; |
|
margin-left: -4em; |
|
display: block; |
|
animation: spin 2s linear infinite; |
|
} |
|
|
|
.loader, |
|
.loader:after { |
|
display: block; |
|
position: absolute; |
|
top: 50%; |
|
margin-top: -4.05em; |
|
} |
|
|
|
@keyframes spin { |
|
0% { |
|
transform: rotate(0deg); |
|
} |
|
|
|
100% { |
|
transform: rotate(360deg); |
|
} |
|
} |
|
|
|
.right-part { |
|
border: 1px solid #dedede; |
|
padding: 5px; |
|
} |
|
|
|
.socials { |
|
position: fixed; |
|
bottom: 20px; |
|
left: 0; |
|
width: 100%; |
|
display: flex; |
|
justify-content: center; |
|
align-items: center; |
|
} |
|
|
|
.icons { |
|
display: flex; |
|
justify-content: center; |
|
align-items: center; |
|
} |
|
|
|
.icons a { |
|
margin: 0 10px; |
|
color: #333; |
|
font-size: 24px; |
|
} |
|
|
|
.credit { |
|
position: absolute; |
|
bottom: 0; |
|
left: 10px; |
|
color: #333; |
|
} |
|
</style> |
|
</head> |
|
|
|
<body> |
|
<div class="main container"> |
|
<section class="iupload"> |
|
<h3 class="text-center py-4">Object Classification</h3> |
|
<div class="row"> |
|
<div class="img-part col-md-6"> |
|
<div class="image-part"> |
|
<video autoplay id="video" |
|
poster="https://img.freepik.com/free-vector/group-young-people-posing-photo_52683-18824.jpg?size=338&ext=jpg"></video> |
|
<img src="" id="photo"> |
|
<canvas style="display:none;" id="canvas"></canvas> |
|
</div> |
|
<div class="btn-part"> |
|
<form id="upload-data pt-3" class=""> |
|
<div class="input-group mt-3 row"> |
|
<button type="button" class="btn btn-primary col-md-5 col-xs-5 ml-3 mr-4" |
|
id="uload">Upload</button> |
|
<button id="send" type="button" |
|
class="btn btn-success col-md-5 col-xs-5">Predict</button> |
|
</div> |
|
|
|
<input type="hidden" class="form-control mr-2" id="url" placeholder="Enter REST Api url..." |
|
value="../predict" /> |
|
<input name="upload" type="file" id="fileinput" |
|
style="position:absolute;top:-500px;" /><br /> |
|
</form> |
|
</div> |
|
</div> |
|
<div class="col-md-6 col-xs-12 right-part"> |
|
<h5 class="mb-2"> |
|
<center>Prediction Results</center> |
|
</h5> |
|
<div class="row"> |
|
<div class="res-part col-md-5 col-xs-12"> |
|
<div class="jsonRes"></div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</section> |
|
</div> |
|
<div class="socials"> |
|
<div class="credit">Designed by Shrey Patel</div> |
|
<div class="icons"> |
|
<a href="https://www.linkedin.com/in/shreypatel07" target="_blank"> |
|
<i class="fab fa-linkedin"></i> |
|
</a> |
|
<a href="https://github.com/Shrey-patel-07" target="_blank"> |
|
<i class="fab fa-github"></i> |
|
</a> |
|
<a href="https://x.com/Shrey_Patel_07" target="_blank"> |
|
<i class="fab fa-twitter"></i> |
|
</a> |
|
</div> |
|
</div> |
|
|
|
|
|
<div id="loading"> |
|
<div class="loader"></div> |
|
</div> |
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> |
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" |
|
integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" |
|
crossorigin="anonymous"></script> |
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" |
|
integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" |
|
crossorigin="anonymous"></script> |
|
|
|
<script> |
|
var mybtn = document.getElementById('startbtn'); |
|
var myvideo = document.getElementById('video'); |
|
var mycanvas = document.getElementById('canvas'); |
|
var myphoto = document.getElementById('photo'); |
|
var base_data = ""; |
|
|
|
function sendRequest(base64Data) { |
|
var type = "json"; |
|
if (base64Data != "" || base64Data != null) { |
|
if (type == "imgtobase") { |
|
$(".res-part").html(""); |
|
$(".res-part").html(base64Data); |
|
} |
|
else if (type == "basetoimg") { |
|
var imageData = $("#imgstring").val(); |
|
$(".res-part").html(""); |
|
$(".res-part").append("<img src='data:image/jpeg;base64," + imageData + "' alt='' />"); |
|
} |
|
else { |
|
var url = $("#url").val(); |
|
$("#loading").show(); |
|
$.ajax({ |
|
url: url, |
|
type: "post", |
|
cache: false, |
|
async: true, |
|
crossDomain: true, |
|
headers: { |
|
'Content-Type': 'application/json', |
|
'Access-Control-Allow-Origin': '*' |
|
}, |
|
data: JSON.stringify({ image: base64Data }), |
|
success: function (res) { |
|
$(".res-part").html(""); |
|
$(".res-part2").html(""); |
|
try { |
|
var imageData = res[1].image; |
|
if (imageData.length > 100) { |
|
if (imageData.length > 10) { $(".res-part2").append("<img class='resp-img' src='data:image/jpeg;base64," + imageData + "' alt='' />"); } |
|
} |
|
} catch (e) { } |
|
$(".res-part").html("<pre>" + res[0].image + "</pre>"); |
|
$("#loading").hide(); |
|
} |
|
}); |
|
} |
|
} |
|
} |
|
|
|
$(document).ready(function () { |
|
$("#loading").hide(); |
|
|
|
$('#send').click(function (evt) { |
|
sendRequest(base_data); |
|
}); |
|
|
|
$('#uload').click(function (evt) { |
|
$('#fileinput').focus().trigger('click'); |
|
}); |
|
$("#fileinput").change(function () { |
|
if (this.files && this.files[0]) { |
|
var reader = new FileReader(); |
|
reader.onload = function (e) { |
|
var url = e.target.result; |
|
var img = new Image(); |
|
img.crossOrigin = 'Anonymous'; |
|
img.onload = function () { |
|
var canvas = document.createElement('CANVAS'); |
|
var ctx = canvas.getContext('2d'); |
|
canvas.height = this.height; |
|
canvas.width = this.width; |
|
ctx.drawImage(this, 0, 0); |
|
base_data = canvas.toDataURL('image/jpeg', 1.0).replace(/^data:image.+;base64,/, ''); |
|
canvas = null; |
|
}; |
|
img.src = url; |
|
$('#photo').attr('src', url); |
|
$('#photo').show(); |
|
$('#video').hide(); |
|
} |
|
reader.readAsDataURL(this.files[0]); |
|
} |
|
}); |
|
}); |
|
|
|
</script> |
|
</body> |
|
|
|
</html> |
|
|