| {% extends "base.html" %} |
|
|
| {% block content %} |
| <div class="modal fade" id="noimage" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true"> |
| <div class="modal-dialog"> |
| <div class="modal-content"> |
| <div class="modal-header"> |
| <h5 class="modal-title" id="exampleModalLabel">提示</h5> |
| <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> |
| </div> |
| <div class="modal-body"> |
| 请选择图片! |
| </div> |
| <div class="modal-footer"> |
| <button type="button" class="btn btn-secondary btn-danger" data-bs-dismiss="modal">确定</button> |
| </div> |
| </div> |
| </div> |
| </div> |
| {% if current_user.is_visitor %} |
| {% include 'limits.html' %} |
| {% endif %} |
| <div class="container-fluid"> |
| <div class="row"> |
| {% include 'sidenav.html' %} |
| <main class="col-md-9 ms-sm-auto col-lg-10 px-md-4"> |
| <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom"> |
| <h1 class="h2">病害识别</h1> |
| </div> |
|
|
| <div class="container container-table"> |
| <div class="row vertical-center-row"> |
| <div class="d-flex align-items-start"> |
| <div class="nav flex-column nav-pills me-3" id="v-pills-tab" role="tablist" aria-orientation="vertical"> |
| {% if current_user.is_visitor %} |
| <button class="nav-link active" id="v-pills-all-tab" data-bs-toggle="pill" data-bs-target="#v-pills-all" type="button" role="tab" aria-controls="v-pills-all" aria-selected="false">专类识别</button> |
| {% else %} |
| <button class="nav-link active" id="v-pills-all-tab" data-bs-toggle="pill" data-bs-target="#v-pills-all" type="button" role="tab" aria-controls="v-pills-all" aria-selected="true">泛类识别</button> |
| {% endif %} |
|
|
| <hr> |
| <button class="nav-link" id="v-pills-Apple-tab" data-bs-toggle="pill" data-bs-target="#v-pills-Apple" type="button" role="tab" aria-controls="v-pills-Apple" aria-selected="false">苹果</button> |
| <button class="nav-link" id="v-pills-Cherry-tab" data-bs-toggle="pill" data-bs-target="#v-pills-Cherry" type="button" role="tab" aria-controls="v-pills-Cherry" aria-selected="false">樱桃</button> |
| <button class="nav-link" id="v-pills-Corn-tab" data-bs-toggle="pill" data-bs-target="#v-pills-Corn" type="button" role="tab" aria-controls="v-pills-Corn" aria-selected="false">玉米</button> |
| <button class="nav-link" id="v-pills-Grape-tab" data-bs-toggle="pill" data-bs-target="#v-pills-Grape" type="button" role="tab" aria-controls="v-pills-Grape" aria-selected="false">葡萄</button> |
| <button class="nav-link" id="v-pills-Peach-tab" data-bs-toggle="pill" data-bs-target="#v-pills-Peach" type="button" role="tab" aria-controls="v-pills-Peach" aria-selected="false">桃子</button> |
| <button class="nav-link" id="v-pills-Pepper-tab" data-bs-toggle="pill" data-bs-target="#v-pills-Pepper" type="button" role="tab" aria-controls="v-pills-Pepper" aria-selected="false">胡椒</button> |
| <button class="nav-link" id="v-pills-Potato-tab" data-bs-toggle="pill" data-bs-target="#v-pills-Potato" type="button" role="tab" aria-controls="v-pills-Potato" aria-selected="false">土豆</button> |
| <button class="nav-link" id="v-pills-Tomato-tab" data-bs-toggle="pill" data-bs-target="#v-pills-Tomato" type="button" role="tab" aria-controls="v-pills-Tomato" aria-selected="false">西红柿</button> |
| </div> |
| <div class="tab-content" id="v-pills-tabContent" style="margin: 0 auto;"> |
| <div class="tab-pane fade show active" id="v-pills-all" role="tabpanel" aria-labelledby="v-pills-all-tab"> |
| {% if current_user.is_visitor %} |
| <div class="text-center"> |
| 须知<br> |
| 访问者无法使用泛类识别功能<br> |
| 且识别结果和历史将无法保存<br> |
| 使用本产品默认接受以上规定<br> |
| 任何后果及损失概不负责!! |
| </div> |
| {% else %} |
| <div class="col-md-12"> |
| <div class="card" style="width: 14rem"> |
| <img id="selected-image" src="{{ url_for('static', filename='images/placeholder-image.png')}}" class="card-img-top" alt="..."> |
| <div class="card-body"> |
| <input id="image-selector" type="file"> |
| <p class="card-text">选择图片请点击👆</p> |
| </div> |
| <ul class="list-group list-group-flush"> |
| <li class="list-group-item">品种: <span id="species"></span></li> |
| <li class="list-group-item">健康状态: <span id="condition"></span></li> |
| <li class="list-group-item">置信度: <span id="value"></span></li> |
| </ul> |
| <div class="text-center card-body"> |
| <div class="btn-group me-2"> |
| <button id="predict-button" type="button" class="btn btn-sm btn-outline-secondary">识别</button> |
| <button type="button" class="btn btn-sm btn-outline-secondary" onclick="window.location.href='{{ url_for('feedback') }}'">反馈</button> |
| </div> |
| </div> |
| </div> |
| </div> |
| {% endif %} |
| </div> |
| {% with label="Apple" %} |
| <div class="tab-pane fade" id="v-pills-Apple" role="tabpanel" aria-labelledby="v-pills-Apple-tab">{% include 'predict_card.html' %}</div> |
| {% endwith %} |
| {% with label="Cherry" %} |
| <div class="tab-pane fade" id="v-pills-Cherry" role="tabpanel" aria-labelledby="v-pills-Cherry-tab">{% include 'predict_card.html' %}</div> |
| {% endwith %} |
| {% with label="Corn" %} |
| <div class="tab-pane fade" id="v-pills-Corn" role="tabpanel" aria-labelledby="v-pills-Corn-tab">{% include 'predict_card.html' %}</div> |
| {% endwith %} |
| {% with label="Grape" %} |
| <div class="tab-pane fade" id="v-pills-Grape" role="tabpanel" aria-labelledby="v-pills-Grape-tab">{% include 'predict_card.html' %}</div> |
| {% endwith %} |
| {% with label="Peach" %} |
| <div class="tab-pane fade" id="v-pills-Peach" role="tabpanel" aria-labelledby="v-pills-Peach-tab">{% include 'predict_card.html' %}</div> |
| {% endwith %} |
| {% with label="Pepper" %} |
| <div class="tab-pane fade" id="v-pills-Pepper" role="tabpanel" aria-labelledby="v-pills-Pepper-tab">{% include 'predict_card.html' %}</div> |
| {% endwith %} |
| {% with label="Potato" %} |
| <div class="tab-pane fade" id="v-pills-Potato" role="tabpanel" aria-labelledby="v-pills-Potato-tab">{% include 'predict_card.html' %}</div> |
| {% endwith %} |
| {% with label="Tomato" %} |
| <div class="tab-pane fade" id="v-pills-Tomato" role="tabpanel" aria-labelledby="v-pills-Tomato-tab">{% include 'predict_card.html' %}</div> |
| {% endwith %} |
| </div> |
| </div> |
| </div> |
| </div> |
| </main> |
| </div> |
| </div> |
|
|
| {# #} |
| {# <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">#} |
|
|
| |
| <script src="/static/js/jquery.min.js"></script> |
|
|
| {# #} |
| {# <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>#} |
|
|
| <script> |
| let base64Image; |
| $("#image-selector").change(function() { |
| let reader = new FileReader(); |
| reader.onload = function(e) { |
| let dataURL = reader.result; |
| if(/image/.test($("#image-selector")[0].files[0].type)) { |
| var typeOfUpload = $("#image-selector")[0].files[0].type |
| |
| $('#selected-image').attr("src", dataURL); |
| if (typeOfUpload === "image/jpeg") { // jpg jpeg jfif |
| base64Image = dataURL.replace("data:image/jpeg;base64,", ""); |
| }else if (typeOfUpload === "image/png"){ |
| base64Image = dataURL.replace("data:image/png;base64,", ""); |
| }else if (typeOfUpload === "image/bmp"){ |
| base64Image = dataURL.replace("data:image/bmp;base64,", ""); |
| }else { |
| alert("not known") |
| return |
| } |
| }else{ |
| var noimage = new bootstrap.Modal(document.getElementById('noimage'), {}) |
| noimage.show() |
| return |
| } |
| |
| {#console.log($("#image-selector")[0].files[0].name);#} |
| } |
| reader.readAsDataURL($("#image-selector")[0].files[0]); |
| $("#species").text(""); |
| $("#condition").text(""); |
| $("#value").text(""); |
| }); |
| |
| $("#predict-button").click(function(){ |
| let message = { |
| image: base64Image |
| } |
| if(typeof(message['image']) != "undefined") { |
| $.post("{{ url_for('predict') }}", JSON.stringify(message), function(response){ |
| $("#species").text(response.prediction.species); |
| $("#condition").text(response.prediction.condition); |
| $("#value").text(response.prediction.value); |
| console.log(response); |
| }); |
| }else{ |
| var noimage = new bootstrap.Modal(document.getElementById('noimage'), {}) |
| noimage.show() |
| return |
| } |
| }); |
| </script> |
| {% endblock %} |
|
|