update lấy features từ ảnh upload
This commit is contained in:
parent
811ed32e04
commit
f694e9fe71
|
@ -8,6 +8,7 @@ use yii\filters\VerbFilter;
|
||||||
use yii\helpers\FileHelper;
|
use yii\helpers\FileHelper;
|
||||||
use app\models\CaptureLogs;
|
use app\models\CaptureLogs;
|
||||||
use app\models\ListManagement;
|
use app\models\ListManagement;
|
||||||
|
use app\models\common;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CardController implements the CRUD actions for Card model.
|
* CardController implements the CRUD actions for Card model.
|
||||||
|
@ -58,7 +59,7 @@ class ApiController extends Controller {
|
||||||
if (Yii::$app->request->post()) {
|
if (Yii::$app->request->post()) {
|
||||||
$post = Yii::$app->request->bodyParams;
|
$post = Yii::$app->request->bodyParams;
|
||||||
$time = date_format(date_create_from_format('Y-m-d H:i:s', $post['time']), 'U');
|
$time = date_format(date_create_from_format('Y-m-d H:i:s', $post['time']), 'U');
|
||||||
$key = $this->generateRandomString();
|
$key = common::generateRandomString();
|
||||||
$RootFolder = Yii::getAlias('@webroot') . "/data/uploads";
|
$RootFolder = Yii::getAlias('@webroot') . "/data/uploads";
|
||||||
$targetPath = $RootFolder . "/face";
|
$targetPath = $RootFolder . "/face";
|
||||||
$fileName = "face_" . $key . "_" . $time . ".png";
|
$fileName = "face_" . $key . "_" . $time . ".png";
|
||||||
|
@ -95,14 +96,4 @@ class ApiController extends Controller {
|
||||||
return $allFeatures;
|
return $allFeatures;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function generateRandomString($length = 10) {
|
|
||||||
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
||||||
$charactersLength = strlen($characters);
|
|
||||||
$randomString = '';
|
|
||||||
for ($i = 0; $i < $length; $i++) {
|
|
||||||
$randomString .= $characters[rand(0, $charactersLength - 1)];
|
|
||||||
}
|
|
||||||
return $randomString;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ use yii\web\NotFoundHttpException;
|
||||||
use yii\filters\VerbFilter;
|
use yii\filters\VerbFilter;
|
||||||
use app\models\CaptureLogs;
|
use app\models\CaptureLogs;
|
||||||
use app\models\common;
|
use app\models\common;
|
||||||
|
use yii\helpers\FileHelper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ListMamagementController implements the CRUD actions for ListMamagement model.
|
* ListMamagementController implements the CRUD actions for ListMamagement model.
|
||||||
|
@ -33,14 +34,14 @@ class ListManagementController extends Controller {
|
||||||
public function actionIndex($from = "", $to = "", $name = "", $type = "all", $gender = "all") {
|
public function actionIndex($from = "", $to = "", $name = "", $type = "all", $gender = "all") {
|
||||||
$f = date_format(date_create_from_format('H:i d/m/Y', "00:00 " . date("d/m/Y")), 'U');
|
$f = date_format(date_create_from_format('H:i d/m/Y', "00:00 " . date("d/m/Y")), 'U');
|
||||||
$t = date_format(date_create_from_format('H:i d/m/Y', "23:59 " . date("d/m/Y")), 'U');
|
$t = date_format(date_create_from_format('H:i d/m/Y', "23:59 " . date("d/m/Y")), 'U');
|
||||||
if ($from !== "" && $to !== "") {
|
|
||||||
$f = date_format(date_create_from_format('H:i d/m/Y', $from), 'U');
|
|
||||||
$t = date_format(date_create_from_format('H:i d/m/Y', $to), 'U');
|
|
||||||
}
|
|
||||||
$this->view->title = "List management";
|
$this->view->title = "List management";
|
||||||
$searchModel = new ListManagementSearch();
|
$searchModel = new ListManagementSearch();
|
||||||
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
|
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
|
||||||
|
if ($from !== "" && $to !== "") {
|
||||||
|
$f = date_format(date_create_from_format('H:i d/m/Y', $from), 'U');
|
||||||
|
$t = date_format(date_create_from_format('H:i d/m/Y', $to), 'U');
|
||||||
$dataProvider->query->andWhere(["BETWEEN", "time", $f, $t]);
|
$dataProvider->query->andWhere(["BETWEEN", "time", $f, $t]);
|
||||||
|
}
|
||||||
if ($name !== "")
|
if ($name !== "")
|
||||||
$dataProvider->query->andWhere(["LIKE", "name", $name]);
|
$dataProvider->query->andWhere(["LIKE", "name", $name]);
|
||||||
if ($type !== "all")
|
if ($type !== "all")
|
||||||
|
@ -58,10 +59,23 @@ class ListManagementController extends Controller {
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function actionView($id) {
|
public function actionAdd() {
|
||||||
return $this->render('view', [
|
$model = new ListManagement();
|
||||||
'model' => $this->findModel($id),
|
Yii::$app->response->format = "json";
|
||||||
|
if (Yii::$app->request->post()) {
|
||||||
|
$data = Yii::$app->request->post();
|
||||||
|
$features = json_decode(common::requestToEngine("/get-feature", [
|
||||||
|
"image_paths" => [
|
||||||
|
["url" => "/var/www/html/BiFace_Server_Lite/web/data/uploads/face/" . $data['image'], "type" => "raw"]
|
||||||
|
]
|
||||||
|
]), true);
|
||||||
|
$data['image'] = json_encode([
|
||||||
|
["url" => $data['image'], "features" => $features['results'][0]['feature']]
|
||||||
]);
|
]);
|
||||||
|
$model->create($data);
|
||||||
|
file_get_contents("http://localhost:2305/update-feature");
|
||||||
|
return ["status" => true];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function actionCreate() {
|
public function actionCreate() {
|
||||||
|
@ -129,6 +143,16 @@ class ListManagementController extends Controller {
|
||||||
if (Yii::$app->request->post()) {
|
if (Yii::$app->request->post()) {
|
||||||
$data = Yii::$app->request->post();
|
$data = Yii::$app->request->post();
|
||||||
$model = $this->findModel($data['id']);
|
$model = $this->findModel($data['id']);
|
||||||
|
if ($data['image'] !== "") {
|
||||||
|
$features = json_decode(common::requestToEngine("/get-feature", [
|
||||||
|
"image_paths" => [
|
||||||
|
["url" => "/var/www/html/BiFace_Server_Lite/web/data/uploads/face/" . $data['image'], "type" => "raw"]
|
||||||
|
]
|
||||||
|
]), true);
|
||||||
|
$images = json_decode($model->image, true);
|
||||||
|
$images[] = ["url" => $data['image'], "features" => $features['results'][0]['feature']];
|
||||||
|
$model->image = json_encode($images);
|
||||||
|
}
|
||||||
$model->type = $data['type'];
|
$model->type = $data['type'];
|
||||||
$model->name = $data['name'];
|
$model->name = $data['name'];
|
||||||
$model->gender = $data['gender'];
|
$model->gender = $data['gender'];
|
||||||
|
@ -188,10 +212,24 @@ class ListManagementController extends Controller {
|
||||||
if (Yii::$app->request->post()) {
|
if (Yii::$app->request->post()) {
|
||||||
$model = new common();
|
$model = new common();
|
||||||
Yii::$app->response->format = "json";
|
Yii::$app->response->format = "json";
|
||||||
return [
|
$url = $model->UploadFile("AnhNhanVien", ["PNG", "JPG", "JPEG", "GIF"], "temp");
|
||||||
"dataPath" => "BiFace/",
|
$features = json_decode(common::requestToEngine("/get-feature", [
|
||||||
"url" => $model->UploadFile("AnhNhanVien", ["PNG", "JPG", "JPEG", "GIF"], "temp")
|
"image_paths" => [
|
||||||
];
|
["url" => "/var/www/html/BiFace_Server_Lite/web/" . $url, "type" => "crop"]
|
||||||
|
]
|
||||||
|
]), true);
|
||||||
|
unlink("/var/www/html/BiFace_Server_Lite/web/" . $url);
|
||||||
|
if ($features['results'][0]['crop'] === "") {
|
||||||
|
return ["status" => false];
|
||||||
|
} else {
|
||||||
|
$key = common::generateRandomString();
|
||||||
|
$RootFolder = Yii::getAlias('@webroot') . "/data/uploads";
|
||||||
|
$targetPath = $RootFolder . "/face";
|
||||||
|
$fileName = "face_" . $key . "_" . time() . ".png";
|
||||||
|
FileHelper::createDirectory($targetPath, 0777);
|
||||||
|
file_put_contents($targetPath . "/" . $fileName, base64_decode($features['results'][0]['crop']));
|
||||||
|
return ["status" => true, "url" => $fileName, "dataPath" => "data/uploads/face/"];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -181,4 +181,14 @@ class common extends \yii\db\ActiveRecord {
|
||||||
]));
|
]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function generateRandomString($length = 10) {
|
||||||
|
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
||||||
|
$charactersLength = strlen($characters);
|
||||||
|
$randomString = '';
|
||||||
|
for ($i = 0; $i < $length; $i++) {
|
||||||
|
$randomString .= $characters[rand(0, $charactersLength - 1)];
|
||||||
|
}
|
||||||
|
return $randomString;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,8 @@
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
<input type="hidden" value="{Url::to(["/list-management/add"])}" name="create_url">
|
||||||
|
<input type="hidden" value="{Url::to(["/list-management/update"])}" name="update_url">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-10" style="max-height: 850px;overflow-y: auto;">
|
<div class="col-md-10" style="max-height: 850px;overflow-y: auto;">
|
||||||
{GridView::widget([
|
{GridView::widget([
|
||||||
|
@ -136,12 +138,12 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{*<hr style="border-top: 1px solid #000;">
|
<hr style="border-top: 1px solid #000;">
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<button class="btn btn-info" onclick="_form();">
|
<button class="btn btn-info" onclick="_form();">
|
||||||
<i class="fa fa-plus-circle"></i> Thêm mới
|
<i class="fa fa-plus-circle"></i> Thêm mới
|
||||||
</button>
|
</button>
|
||||||
</div>*}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="width: 300px;position: absolute;" id="menu" class="hidden">
|
<div style="width: 300px;position: absolute;" id="menu" class="hidden">
|
||||||
|
@ -217,7 +219,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<input type="hidden" value="" name="ListManagementID">
|
<input type="hidden" value="" name="ListManagementID">
|
||||||
<button onclick="_update(this);" data-href='{Url::to(["/list-management/update"])}'>Save</button>
|
<button onclick="_update(this);" data-href='{Url::to(["/list-management/update"])}' id="save-btn">Save</button>
|
||||||
<button onclick="_close();">Cancel</button>
|
<button onclick="_close();">Cancel</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -59,7 +59,6 @@ function _formModified(e) {
|
||||||
},
|
},
|
||||||
success: function (data) {
|
success: function (data) {
|
||||||
common.modalBlock(false);
|
common.modalBlock(false);
|
||||||
$("#upload-btn").addClass("hidden");
|
|
||||||
$("select[name='Type']").val(data.type);
|
$("select[name='Type']").val(data.type);
|
||||||
$("input[name='Name']").val(data.name);
|
$("input[name='Name']").val(data.name);
|
||||||
$("select[name='Gender']").val(data.gender);
|
$("select[name='Gender']").val(data.gender);
|
||||||
|
@ -67,6 +66,8 @@ function _formModified(e) {
|
||||||
$("input[name='Telephone']").val(data.telephone);
|
$("input[name='Telephone']").val(data.telephone);
|
||||||
$("input[name='Address']").val(data.address);
|
$("input[name='Address']").val(data.address);
|
||||||
$("#FaceImage").attr("src", data.image);
|
$("#FaceImage").attr("src", data.image);
|
||||||
|
$("#save-btn").attr("onclick", "_update(this);");
|
||||||
|
$("#save-btn").attr("data-href", $("input[name='update_url']").val());
|
||||||
},
|
},
|
||||||
error: function (jqXHR, textStatus, errorThrown) {
|
error: function (jqXHR, textStatus, errorThrown) {
|
||||||
common.modalBlock(false);
|
common.modalBlock(false);
|
||||||
|
@ -92,7 +93,8 @@ function _update(e) {
|
||||||
birthday: $("input[name='Birthday']").val(),
|
birthday: $("input[name='Birthday']").val(),
|
||||||
telephone: $("input[name='Telephone']").val(),
|
telephone: $("input[name='Telephone']").val(),
|
||||||
address: $("input[name='Address']").val(),
|
address: $("input[name='Address']").val(),
|
||||||
id: $("input[name='ListManagementID']").val()
|
id: $("input[name='ListManagementID']").val(),
|
||||||
|
image: $("input[name='AnhNhanVienUrl']").val()
|
||||||
},
|
},
|
||||||
success: function (data) {
|
success: function (data) {
|
||||||
alert("Cập nhật dữ liệu thành công!");
|
alert("Cập nhật dữ liệu thành công!");
|
||||||
|
@ -189,6 +191,8 @@ function _form() {
|
||||||
$("#form").removeClass("hidden");
|
$("#form").removeClass("hidden");
|
||||||
$("#upload-btn").removeClass("hidden");
|
$("#upload-btn").removeClass("hidden");
|
||||||
$("#FaceImage").attr("src", "/images/user2-160x160.jpg");
|
$("#FaceImage").attr("src", "/images/user2-160x160.jpg");
|
||||||
|
$("#save-btn").attr("onclick", "_create(this);");
|
||||||
|
$("#save-btn").attr("data-href", $("input[name='create_url']").val());
|
||||||
}
|
}
|
||||||
|
|
||||||
function btnImage() {
|
function btnImage() {
|
||||||
|
@ -209,9 +213,48 @@ function btnImage() {
|
||||||
fakeInputContent: '<span class=\'fa fa-file-image-o\'></span> Chọn hình ảnh',
|
fakeInputContent: '<span class=\'fa fa-file-image-o\'></span> Chọn hình ảnh',
|
||||||
onUploaded: function (data) {
|
onUploaded: function (data) {
|
||||||
var res = JSON.parse(data);
|
var res = JSON.parse(data);
|
||||||
|
if (res.status) {
|
||||||
$("#FaceImage").attr("src", "/" + res.dataPath + res.url);
|
$("#FaceImage").attr("src", "/" + res.dataPath + res.url);
|
||||||
$("input[name='AnhNhanVienUrl']").val(res.url);
|
$("input[name='AnhNhanVienUrl']").val(res.url);
|
||||||
common.uploadBlock(false);
|
common.uploadBlock(false);
|
||||||
|
} else {
|
||||||
|
alert("Hình ảnh không nhận diện được khuôn mặt");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}).addInstance('AnhNhanVien');
|
}).addInstance('AnhNhanVien');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _create(e) {
|
||||||
|
var name = $("input[name='Name']").val();
|
||||||
|
if (name === "") {
|
||||||
|
alert("Hãy nhập tên!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var image = $("input[name='AnhNhanVienUrl']").val();
|
||||||
|
if (image === "") {
|
||||||
|
alert("Hãy tải lên hình ảnh");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
common.modalBlock(true);
|
||||||
|
$.ajax({
|
||||||
|
url: $(e).attr("data-href"),
|
||||||
|
type: 'POST',
|
||||||
|
data: {
|
||||||
|
name: name,
|
||||||
|
type: $("select[name='Type']").val(),
|
||||||
|
gender: $("select[name='Gender']").val(),
|
||||||
|
birthday: $("input[name='Birthday']").val(),
|
||||||
|
telephone: $("input[name='Telephone']").val(),
|
||||||
|
address: $("input[name='Address']").val(),
|
||||||
|
image: image
|
||||||
|
},
|
||||||
|
success: function (data) {
|
||||||
|
alert("Cập nhật dữ liệu thành công!");
|
||||||
|
window.location.reload(true);
|
||||||
|
},
|
||||||
|
error: function (jqXHR, textStatus, errorThrown) {
|
||||||
|
common.modalBlock(false);
|
||||||
|
common.ajaxError();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user