diff --git a/controllers/ListManagementController.php b/controllers/ListManagementController.php index fe67f6d2..db647734 100644 --- a/controllers/ListManagementController.php +++ b/controllers/ListManagementController.php @@ -112,17 +112,27 @@ class ListManagementController extends Controller { return ["status" => false, "text" => "Mỗi đối tượng chỉ nhận tối đa " . \Yii::$app->params['maxPicture'] . " hình ảnh mẫu"]; $add = true; foreach ($images as $key => $value) { - if ($value['url'] === $url) + if ($value['urlOld'] === $url) $add = false; } if ($add) { + $RootFolder = Yii::getAlias('@webroot') . "/data/uploads"; + $targetPath = $RootFolder . "/face"; + FileHelper::createDirectory($targetPath, 0777); + $fileName = "face_" . common::generateRandomString() . "_" . time() . ".png"; + $img = file_get_contents("http://localhost/data/uploads/face/" . $url); + $fileTarget = $targetPath . "/" . $fileName; + if (!$this->resizeImg($img, $fileTarget)) + $fileName = $url; + $features = json_decode(common::requestToEngine("/get-feature", [ "image_paths" => [ - ["url" => "/var/www/html/BiFace_Server_Lite/web/data/uploads/face/" . $url, "type" => "raw"] + ["url" => "/var/www/html/BiFace_Server_Lite/web/data/uploads/face/" . $fileName, "type" => "raw"] ] ]), true); $images[] = [ - "url" => $url, + "url" => $fileName, + "urlOld" => $url, "features" => $features['results'][0]['feature'], "features512" => isset($features['results'][0]['feature512']) ? $features['results'][0]['feature512'] : [] ]; @@ -139,14 +149,24 @@ class ListManagementController extends Controller { } return ["status" => false, "text" => "Hình ảnh này đã được chọn làm mẫu cho đối tượng này!"]; } else { + $RootFolder = Yii::getAlias('@webroot') . "/data/uploads"; + $targetPath = $RootFolder . "/face"; + FileHelper::createDirectory($targetPath, 0777); + $fileName = "face_" . common::generateRandomString() . "_" . time() . ".png"; + $img = file_get_contents("http://localhost/data/uploads/face/" . $url); + $fileTarget = $targetPath . "/" . $fileName; + if (!$this->resizeImg($img, $fileTarget)) + $fileName = $url; + $features = json_decode(common::requestToEngine("/get-feature", [ "image_paths" => [ - ["url" => "/var/www/html/BiFace_Server_Lite/web/data/uploads/face/" . $url, "type" => "raw"] + ["url" => "/var/www/html/BiFace_Server_Lite/web/data/uploads/face/" . $fileName, "type" => "raw"] ] ]), true); $data['image'] = json_encode([ [ - "url" => $url, + "url" => $fileName, + "urlOld" => $url, "features" => $features['results'][0]['feature'], "features512" => isset($features['results'][0]['feature512']) ? $features['results'][0]['feature512'] : [] ] @@ -186,14 +206,24 @@ class ListManagementController extends Controller { if ($check && $check->id != $model->id) return false; if ($data['image'] !== "") { + $RootFolder = Yii::getAlias('@webroot') . "/data/uploads"; + $targetPath = $RootFolder . "/face"; + FileHelper::createDirectory($targetPath, 0777); + $fileName = "face_" . common::generateRandomString() . "_" . time() . ".png"; + $img = file_get_contents("http://localhost/data/uploads/face/" . $data['image']); + $fileTarget = $targetPath . "/" . $fileName; + if (!$this->resizeImg($img, $fileTarget)) + $fileName = $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"] + ["url" => "/var/www/html/BiFace_Server_Lite/web/data/uploads/face/" . $fileName, "type" => "raw"] ] ]), true); $images = json_decode($model->image, true); $images[] = [ - "url" => $data['image'], + "url" => $fileName, + "urlOld" => $data['image'], "features" => $features['results'][0]['feature'], "features512" => isset($features['results'][0]['feature512']) ? $features['results'][0]['feature512'] : [] ]; @@ -235,6 +265,9 @@ class ListManagementController extends Controller { foreach ($images as $key => $value) { if ($value['url'] !== $data['image']) $features[] = $value; + else { + unlink("/var/www/html/BiFace_Server_Lite/web/data/uploads/face/" . $value['url']); + } } $model->image = json_encode($features); $model->save(); @@ -377,22 +410,13 @@ class ListManagementController extends Controller { FileHelper::createDirectory($targetPath, 0777); foreach ($data['images'] as $key => $value) { if ($key < Yii::$app->params['maxPicture']) { - $key = common::generateRandomString(); - $fileName = "face_" . $key . "_" . time() . ".png"; + $fileName = "face_" . common::generateRandomString() . "_" . time() . ".png"; $img = file_get_contents($value); if ($img !== "null") { - $im = imagecreatefromstring($img); - $width = imagesx($im); - $height = imagesy($im); - $newwidth = 224; - $newheight = 224; - $thumb = imagecreatetruecolor($newwidth, $newheight); - imagecopyresized($thumb, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); $fileTarget = $targetPath . "/" . $fileName; - imagejpeg($thumb, $fileTarget); - imagedestroy($thumb); - imagedestroy($im); -// file_put_contents($fileTarget, $img); + if (!$this->resizeImg($img, $fileTarget)) { + file_put_contents($fileTarget, $img); + } $features = json_decode(common::requestToEngine("/get-feature", [ "image_paths" => [ ["url" => "/var/www/html/BiFace_Server_Lite/web/data/uploads/face/" . $fileName, "type" => "raw"] @@ -400,6 +424,7 @@ class ListManagementController extends Controller { ]), true); $ft[] = [ "url" => $fileName, + "urlOld" => $fileName, "features" => $features['results'][0]['feature'], "features512" => isset($features['results'][0]['feature512']) ? $features['results'][0]['feature512'] : [] ]; @@ -453,6 +478,7 @@ class ListManagementController extends Controller { file_put_contents($targetPath . "/" . $fileName, base64_decode($v['url'])); $images[] = [ "url" => $fileName, + "urlOld" => $fileName, "features" => $v['features'], "features512" => isset($v['features512']) ? $v['features512'] : [] ]; @@ -563,4 +589,21 @@ class ListManagementController extends Controller { } } + public function resizeImg($img, $fileTarget) { + $im = imagecreatefromstring($img); + $width = imagesx($im); + $height = imagesy($im); + $newwidth = 224; + $newheight = 224; + if ($width > $newwidth && $height > $newheight) { + $thumb = imagecreatetruecolor($newwidth, $newheight); + imagecopyresized($thumb, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); + imagejpeg($thumb, $fileTarget); + imagedestroy($thumb); + imagedestroy($im); + return true; + } + return false; + } + }