/** * @param $model * @param $type * @param $id * @param $fileName * @param $ext * * @throws \CHttpException */ public function actionResize($model, $type, $id, $fileName, $ext) { $file = FPM::getOriginalFilePath($id, $fileName, $ext); if (file_exists($file)) { $meta = FPM::transfer()->getMetaData($id); if (!(is_array($meta) && $fileName === $meta['real_name'])) { throw new CHttpException(404, 'File not found'); } $config = isset(FPM::m()->imageSections[$model]) && isset(FPM::m()->imageSections[$model][$type]) ? FPM::m()->imageSections[$model][$type] : null; if (!$config) { throw new CHttpException(400, 'Incorrect request'); } $thumbFile = FPM::getCachedImagePath($id, $model, $type, $id . '-' . $meta['real_name'] . '.' . $meta['extension']); FPM::createCacheDir($id, $model, $type); /** @var $ih \fileProcessor\extensions\imageHandler\drivers\MDriverAbstract|\fileProcessor\extensions\imageHandler\MImageHandler */ $ih = Yii::createComponent(FPM::m()->getImageHandler()); $ih->init(); $ih->load($file); if (isset($config['do'])) { switch ($config['do']) { case 'adaptiveResize': $ih->adaptiveThumb($config['width'], $config['height']); break; case 'resize': $ih->resize($config['width'], $config['height']); break; case 'copy': // do nothing, create copy of the file break; case 'resizeCanvas': $ih->resizeCanvas($config['width'], $config['height']); break; case 'rhombusResizeCanvas': $ih->resizeCanvas(floor($config['width'] / 2), floor($config['height'] / 2))->resizeCanvas($config['width'], $config['height']); break; default: throw new CHttpException(400, 'Incorrect action'); break; } } else { $ih->adaptiveThumb($config['width'], $config['height']); } $ih->save($thumbFile, false, $config['quality']); $ih->show(false, $config['quality']); } else { throw new CHttpException(404, 'File not found'); } Yii::app()->end(); }