aiFaceSv = new AiFaceService(); } // 人臉融合 public function faceMerge(Request $request) { $preData = $request->all(); $accessToken = ''; $today = date("Y-m-d"); $tokenData = $this->aiFaceSv->getTokenData(); if (!isset($tokenData)) { $accessToken = $this->aiFaceSv->getAccessToken()->access_token; // \Log::info('1111 accessToken: '.$accessToken); $this->aiFaceSv->setTokenByDay($accessToken,'insert'); } else if (isset($tokenData)&&($tokenData->updateDate!=$today)) { $accessToken = $this->aiFaceSv->getAccessToken()->access_token; // \Log::info('2222 accessToken: '.$accessToken); $this->aiFaceSv->setTokenByDay($accessToken,'update'); } else { $accessToken = $tokenData->accessToken; // \Log::info('3333 accessToken: '.$accessToken); } // \Log::info('accessToken: '.$accessToken); $data = $this->aiFaceSv->getMergeData($accessToken, $preData); return response()->json($data); } // save string to db public function saveData(Request $request) { $title = $request->input('title', 'test title'); $desc = $request->input('desc', 'test description'); $shareId = $this->aiFaceSv->getShareId(); $shareId += 1; $imageName = $shareId.'.jpg'; $this->aiFaceSv->saveShareData($shareId, $title, $desc, $imageName); $data = [ 'id' => $shareId, ]; return $data; } // save image to server public function saveImg(Request $request) { $id = $request->input('id', ''); $imageO = $request->input('image', ''); // \Log::info('imageO: '.$imageO); // \Log::info('id: '.$id); $s3Path = $this->savePhotoToS3($id, $imageO); // 儲存圖片並產生網址 - 儲存到 local if (!file_exists('faceMergeImg')) mkdir('faceMergeImg', 0777, true); $imageName = $id.'.jpg'; $imgPath = public_path('faceMergeImg/' . $imageName); $imgObj = Image::make($imageO)->save($imgPath); $imgUrl = url('faceMergeImg/' . $imageName); // \Log::info('s3Path: '.$s3Path); $data = [ 'imgUrl' => $s3Path, ]; return $data; } // get meta info from db to front public function getMeta(Request $request) { $id = $request->input('id', ''); $kol = $request->input('kol', ''); $shareData = $this->aiFaceSv->getShareData($id); // \Log::info($shareData); return view('shareToFacebook', [ 'webTitle' => $shareData['title'], 'webDesc' => $shareData['desc'], 'imagePath' => url('faceMergeImg/' . $shareData['imageName']), 'kol' => $kol, ]); } /** * 儲存圖片到 S3 */ private function savePhotoToS3($id, $photo) { $folder = 'faceMergeImg'; // \Log::info('folder: '.$folder); // 儲存路徑 // 原圖 $imgNameOrig = $id . '-orig.jpg'; $imgPathOrig = public_path('faceMergeImg/' . $imgNameOrig); // 縮圖 $imgName = str_replace('-orig', '', $imgNameOrig); $imgPath = str_replace('-orig', '', $imgPathOrig); // 暫存本機端 $imgObj = Image::make($photo)->save($imgPath); // 儲存 S3 $s3Path = Storage::disk('s3')->putFileAs($folder, new File($imgPath), $imgName); $s3Url = Storage::disk('s3')->url($s3Path); unlink($imgPath); // unlink($imgPathOrig); return $s3Url; } protected function validateInput($rules, $messages) { $result = true; $err_msg = ""; $validate = Validator::make(request()->all(), $rules, $messages); if ($validate->fails()) { $result = false; $err = $validate->errors(); foreach ($err->all() as $item) { $err_msg .= $item . "\n"; } } return (object)[ 'result' => $result, 'errMsg' => $err_msg ]; } public function test() { return '123'; } }