enableCsrfValidation = false; return parent::beforeAction($action); } private function resizeImg($w, $h, $imageAlias,$imageAliasSave){ $img = Image::getImagine()->open(Yii::getAlias($imageAlias)); $size = $img->getSize(); $width = $size->getWidth(); $height = $size->getHeight(); if($width > $height) { $y = 0; $x = ($width - $height) / 2; $smallestSide = $height; } else { $x = 0; $y = ($height - $width) / 2; $smallestSide = $width; } Image::crop($imageAlias, $smallestSide, $smallestSide,[$x,$y]) ->save(Yii::getAlias($imageAliasSave), ['quality' => 100]); $imagine = new Imagine(); $imagine->open($imageAliasSave) ->resize(new Box($w, $h)) ->save($imageAliasSave, array('flatten' => false)); } public function actionDownloadPhoto() { $model = new ImageSizerForm(); if ($model->load(Yii::$app->request->post())) { $model->file = UploadedFile::getInstance($model, 'file'); $md5_file = md5_file($model->file->tempName); $imgDir = Yii::getAlias('@storage/'.$md5_file.'/'); $imageOrigAlias = Yii::getAlias($imgDir.'original'.'.'.$model->file->extension); if(!is_dir($imgDir)) { mkdir($imgDir, 0755, true); } $model->file->saveAs($imageOrigAlias); if($model->width && $model->height){ $imageAlias = Yii::getAlias($imgDir.$model->width.'x'.$model->height.'.'.$model->file->extension); $imageLink = '/storage/'.$md5_file.'/'.$model->width.'x'.$model->height.'.'.$model->file->extension; $this->resizeImg($model->width, $model->height, $imageOrigAlias,$imageAlias); } else { $imageLink = $imageOrigAlias; } if($model->multi){ return json_encode(['link'=>$imageLink]); } else { $view = $this->renderPartial('@app/components/views/_gallery_item', [ 'item' => ['image'=>$imageLink], ]); return json_encode(['link'=>$imageLink, 'view' =>$view]); } } } }