update face comparison

This commit is contained in:
dongpd 2022-10-11 17:04:48 +07:00
parent 1817771d88
commit 982db2b6c8
10 changed files with 158 additions and 3 deletions

View File

@ -0,0 +1,23 @@
<?php
namespace app\assets;
use yii\web\AssetBundle;
class FaceComparisonAsset extends AssetBundle {
public $basePath = '@webroot';
public $baseUrl = '@web';
public $css = [
];
public $js = [
'js/face-comparison.js'
];
public $depends = [
'yii\web\YiiAsset',
'app\assets\AppAsset',
'yii\jui\JuiAsset',
'yii\bootstrap\BootstrapAsset',
];
}

View File

@ -149,6 +149,7 @@ class ApiController extends Controller {
}
$allFeatures[] = [
"id" => $value->id,
"object_id" => $value->staff_id,
"name" => $this->convert_vi_to_en($value->name),
"feature1" => $feature1,
"feature2" => $feature2

View File

@ -120,6 +120,7 @@ class ControlLogsController extends Controller {
common::updateFeature([
"cmd" => "update",
"id" => $listManagement->id,
"object_id" => $listManagement->staff_id,
"name" => common::convert_vi_to_en($listManagement->name),
"features" => $listManagement->allFeatures
]);

View File

@ -175,6 +175,7 @@ class ListManagementController extends Controller {
common::updateFeature([
"cmd" => "update",
"id" => $listManagement->id,
"object_id" => $listManagement->staff_id,
"name" => common::convert_vi_to_en($listManagement->name),
"features" => $listManagement->allFeatures
]);
@ -282,6 +283,7 @@ class ListManagementController extends Controller {
common::updateFeature([
"cmd" => "update",
"id" => $model->id,
"object_id" => $model->staff_id,
"name" => common::convert_vi_to_en($model->name),
"features" => $model->allFeatures
]);
@ -300,6 +302,7 @@ class ListManagementController extends Controller {
common::updateFeature([
"cmd" => "delete",
"id" => $model->id,
"object_id" => $model->staff_id,
"name" => common::convert_vi_to_en($model->name),
"features" => []
]);
@ -326,6 +329,7 @@ class ListManagementController extends Controller {
common::updateFeature([
"cmd" => "update",
"id" => $model->id,
"object_id" => $model->staff_id,
"name" => common::convert_vi_to_en($model->name),
"features" => $model->allFeatures
]);
@ -356,6 +360,7 @@ class ListManagementController extends Controller {
common::updateFeature([
"cmd" => "delete",
"id" => $staff->id,
"object_id" => $staff->staff_id,
"name" => common::convert_vi_to_en($staff->name),
"features" => []
]);
@ -565,6 +570,7 @@ class ListManagementController extends Controller {
common::updateFeature([
"cmd" => "update",
"id" => $model->id,
"object_id" => $model->staff_id,
"name" => common::convert_vi_to_en($model->name),
"features" => $model->allFeatures
]);
@ -597,6 +603,7 @@ class ListManagementController extends Controller {
common::updateFeature([
"cmd" => "create",
"id" => $model->id,
"object_id" => $model->staff_id,
"name" => common::convert_vi_to_en($model->name),
"features" => $model->allFeatures
]);
@ -653,6 +660,7 @@ class ListManagementController extends Controller {
common::updateFeature([
"cmd" => "update",
"id" => $model->id,
"object_id" => $model->staff_id,
"name" => common::convert_vi_to_en($model->name),
"features" => $model->allFeatures
]);
@ -673,6 +681,7 @@ class ListManagementController extends Controller {
common::updateFeature([
"cmd" => "create",
"id" => $model->id,
"object_id" => $model->staff_id,
"name" => common::convert_vi_to_en($model->name),
"features" => $model->allFeatures
]);
@ -918,4 +927,39 @@ class ListManagementController extends Controller {
}
}
public function actionFaceComparison() {
if (Yii::$app->request->post()) {
$post = Yii::$app->request->post();
Yii::$app->response->format = "json";
$results = json_decode(file_get_contents("http://192.168.1.43:2305/compare", false, stream_context_create([
'http' => [
'header' => "Content-Type: application/json",
'method' => "POST",
'content' => json_encode([
"type" => "base64",
"img0" => base64_encode(file_get_contents("/var/www/html/BiFace_Server_Lite/web" . $post['face1'])),
"img1" => base64_encode(file_get_contents("/var/www/html/BiFace_Server_Lite/web" . $post['face2']))
])
]
])), true);
return [
"type1" => number_format($results['type1']['percent'] * 100, 2),
"type2" => number_format($results['type2']['percent'] * 100, 2)
];
} else {
$this->view->title = Yii::t("app", "SO_SANH_MAT");
return $this->render('face-comparison', [
]);
}
}
public function actionUploadFace() {
if (Yii::$app->request->post()) {
$post = Yii::$app->request->post();
$model = new \app\models\UploadForm();
$url = $model->UploadGlobal("image" . $post['imageIndex'], ["PNG", "JPG", "JPEG", "GIF"], "comparison");
return $url;
}
}
}

View File

@ -156,5 +156,6 @@ return [
"SUA_LICH_TRINH" => "Edit schedule",
"AP_DUNG_CHO_TAT_CA_DOI_TUONG_DA_CHON" => "Apply to all selected objects",
"XOA_LICH_TRINH" => "Delete schedule",
"BAN_CO_CHAC_CHAN_MUON_XOA_LICH_TRINH_NAY_KHONG" => "Are you sure you want to delete this schedule?"
"BAN_CO_CHAC_CHAN_MUON_XOA_LICH_TRINH_NAY_KHONG" => "Are you sure you want to delete this schedule?",
"SO_SANH_MAT" => "Face comparison"
];

View File

@ -156,5 +156,6 @@ return [
"SUA_LICH_TRINH" => "スケジュールを編集",
"AP_DUNG_CHO_TAT_CA_DOI_TUONG_DA_CHON" => "選択したすべてのオブジェクトに適用",
"XOA_LICH_TRINH" => "スケジュールを削除",
"BAN_CO_CHAC_CHAN_MUON_XOA_LICH_TRINH_NAY_KHONG" => "このスケジュールを削除してもよろしいですか?"
"BAN_CO_CHAC_CHAN_MUON_XOA_LICH_TRINH_NAY_KHONG" => "このスケジュールを削除してもよろしいですか?",
"SO_SANH_MAT" => "顔比較"
];

View File

@ -156,5 +156,6 @@ return [
"SUA_LICH_TRINH" => "Sửa lịch trình",
"AP_DUNG_CHO_TAT_CA_DOI_TUONG_DA_CHON" => "Áp dụng cho tất cả đối tượng đã chọn",
"XOA_LICH_TRINH" => "Xóa lịch trình",
"BAN_CO_CHAC_CHAN_MUON_XOA_LICH_TRINH_NAY_KHONG" => "Bạn có chắc chắn muốn xóa lịch trình này không?"
"BAN_CO_CHAC_CHAN_MUON_XOA_LICH_TRINH_NAY_KHONG" => "Bạn có chắc chắn muốn xóa lịch trình này không?",
"SO_SANH_MAT" => "So sánh mặt"
];

View File

@ -0,0 +1,27 @@
{extends file=$smarty.current_dir|cat:'/../extends.tpl'}
{use class="yii\helpers\Url"}
{use class="app\assets\FaceComparisonAsset"}
{FaceComparisonAsset::register($this)|void}
{block name='content'}<br>
<input type="hidden" name="url_upload_face" value="{Url::to(['/list-management/upload-face'])}">
<input type="hidden" name="url_face_comparison" value="{Url::to(['/list-management/face-comparison'])}">
<div class="row">
<div class="col-md-3 col-md-push-2 text-center">
<img src="/images/user2-160x160.jpg" class="img-thumbnail" id="face1" style="width: 70%;cursor: pointer;" onclick="$('#image1').trigger('click');">
<div class="hidden">
<input type="file" name="image1" id="image1">
</div>
</div>
<div class="col-md-2 col-md-push-2 text-center">
<div style="padding-top: 100px;">
<b class="text-red" style="font-size: 40px;" id="percent">0.00%</b>
</div>
</div>
<div class="col-md-3 col-md-push-2 text-center">
<img src="/images/user2-160x160.jpg" class="img-thumbnail" id="face2" style="width: 70%;cursor: pointer;" onclick="$('#image2').trigger('click');">
<div class="hidden">
<input type="file" name="image2" id="image2">
</div>
</div>
</div>
{/block}

View File

@ -124,6 +124,9 @@
])}
</div>
<div class="col-md-2" style="padding-right: 30px;">
<div class="pull-right" style="margin-top: 10px;">
<a class="btn btn-primary btn-xs" href="{Url::to(['/list-management/face-comparison'])}">{Yii::t("app", "SO_SANH_MAT")}</a>
</div>
<h4>{Yii::t("app", "TIM_KIEM_DU_LIEU")}</h4>
{*<div class="form-group">
<label class="control-label">Từ</label>

53
web/js/face-comparison.js Normal file
View File

@ -0,0 +1,53 @@
$(function () {
btnFace("1");
btnFace("2");
});
function btnFace(imageIndex) {
var fData = {
UploadImage: true,
imageIndex: imageIndex
};
fData[common.csrfParam] = common.csrf;
new afuButton({
uploadURI: $("input[name='url_upload_face']").val(),
formData: fData,
wrap: {
tagName: 'div',
classes: ''
},
fileExtension: '.png,.jpg,.jpeg,.gif',
fileSizeLimit: 1,
classes: 'btn btn-default',
fakeInputContent: '<span class=\'fa fa-file-image-o\'></span> Chọn hình ảnh',
onUploaded: function (data) {
$("#face" + imageIndex).attr("src", "/data/uploads" + data);
common.uploadBlock(false);
compareFace();
}
}).addInstance('image' + imageIndex);
}
function compareFace() {
var face1 = $("#face1").attr("src");
var face2 = $("#face2").attr("src");
if (face1 == "/images/user2-160x160.jpg" || face2 == "/images/user2-160x160.jpg")
return;
common.modalBlock(true);
$.ajax({
url: $("input[name='url_face_comparison']").val(),
type: 'POST',
data: {
face1: face1,
face2: face2
},
success: function (data) {
common.modalBlock(false);
$("#percent").html(data.type1 + "%<br>[" + data.type2 + "%]");
},
error: function (jqXHR, textStatus, errorThrown) {
common.modalBlock(false);
common.ajaxError();
}
});
}