pendalf89\filemanager\models\Mediafile::createThumbs PHP Méthode

createThumbs() public méthode

Create thumbs for this image
public createThumbs ( array $routes, array $presets ) : boolean
$routes array see routes in module config
$presets array thumbs presets. See in module config
Résultat boolean
    public function createThumbs(array $routes, array $presets)
    {
        $thumbs = [];
        $basePath = $basePath = Yii::getAlias($routes['basePath']);
        $originalFile = pathinfo($this->url);
        $dirname = $originalFile['dirname'];
        $filename = $originalFile['filename'];
        $extension = $originalFile['extension'];
        Image::$driver = [Image::DRIVER_GD2, Image::DRIVER_GMAGICK, Image::DRIVER_IMAGICK];
        foreach ($presets as $alias => $preset) {
            $width = $preset['size'][0];
            $height = $preset['size'][1];
            $mode = isset($preset['mode']) ? $preset['mode'] : ImageInterface::THUMBNAIL_OUTBOUND;
            $thumbUrl = "{$dirname}/" . $this->getThumbFilename($filename, $extension, $alias, $width, $height);
            Image::thumbnail("{$basePath}/{$this->url}", $width, $height, $mode)->save("{$basePath}/{$thumbUrl}");
            $thumbs[$alias] = $thumbUrl;
        }
        $this->thumbs = serialize($thumbs);
        $this->detachBehavior('timestamp');
        // create default thumbnail
        $this->createDefaultThumb($routes);
        return $this->save();
    }

Usage Example

 /**
  * Provides upload file
  * @return mixed
  */
 public function actionUpload()
 {
     Yii::$app->response->format = Response::FORMAT_JSON;
     $model = new Mediafile();
     $routes = $this->module->routes;
     $rename = $this->module->rename;
     $model->saveUploadedFile($routes, $rename);
     $bundle = FilemanagerAsset::register($this->view);
     if ($model->isImage()) {
         $model->createThumbs($routes, $this->module->thumbs);
     }
     $response['files'][] = ['url' => $model->url, 'thumbnailUrl' => $model->getDefaultThumbUrl($bundle->baseUrl), 'name' => $model->filename, 'type' => $model->type, 'size' => $model->file->size, 'deleteUrl' => Url::to(['file/delete', 'id' => $model->id]), 'deleteType' => 'POST'];
     return $response;
 }