Xpressengine\Media\Models\Image::getThumbnail PHP Method

getThumbnail() public static method

Get a thumbnail image
public static getThumbnail ( Media $media, string $type, string $dimension, boolean $defaultSelf = true ) : Image | null
$media Media media instance
$type string thumbnail make type
$dimension string dimension code
$defaultSelf boolean if set true, returns self when thumbnail not exists
return Image | null
    public static function getThumbnail(Media $media, $type, $dimension, $defaultSelf = true)
    {
        $image = static::derives($media)->whereHas('meta', function ($query) use($type, $dimension) {
            $query->where('type', $type)->where('code', $dimension);
        })->with('meta')->first();
        return !$image && $defaultSelf ? $media : $image;
    }

Usage Example

 protected static function bindGalleryThumb($item)
 {
     /** @var \Xpressengine\Media\MediaManager $mediaManager */
     $mediaManager = \App::make('xe.media');
     // board gallery thumbnails 에 항목이 없는 경우
     if ($item->boardThumbnailFileId === null && $item->boardThumbnailPath === null) {
         // find file by document id
         $files = File::getByFileable($item->id);
         $fileId = '';
         $externalPath = '';
         $thumbnailPath = '';
         if (count($files) == 0) {
             // find file by contents link or path
             $externalPath = static::getImagePathFromContent($item->content);
             // make thumbnail
             $thumbnailPath = $externalPath;
         } else {
             foreach ($files as $file) {
                 if ($mediaManager->is($file) !== true) {
                     continue;
                 }
                 // 어떤 크기의 썸네일을 사용할 것인지 스킨 설정을 통해 결정(두배 이미지가 좋다함)
                 $dimension = 'L';
                 $media = Image::getThumbnail($mediaManager->make($file), BoardModule::THUMBNAIL_TYPE, $dimension);
                 if ($media === null) {
                     continue;
                 }
                 $fileId = $file->id;
                 $thumbnailPath = $media->url();
                 break;
             }
         }
         $item->boardThumbnailFileId = $fileId;
         $item->boardThumbnailExternalPath = $externalPath;
         $item->boardThumbnailPath = $thumbnailPath;
         $model = new BoardGalleryThumb();
         $model->fill(['targetId' => $item->id, 'boardThumbnailFileId' => $fileId, 'boardThumbnailExternalPath' => $externalPath, 'boardThumbnailPath' => $thumbnailPath]);
         $model->save();
     }
     // 없을 경우 출력될 디폴트 이미지 (스킨의 설정으로 뺄 수 있을것 같음)
     if ($item->boardThumbnailPath == '') {
         $item->boardThumbnailPath = 'http://placehold.it/300x200';
     }
 }
All Usage Examples Of Xpressengine\Media\Models\Image::getThumbnail