### app binding : xe.media 으로 바인딩 되어 있음 XeMedia Facade 로 접근이 가능 ### 미디어 파일 확인 및 캐스팅 php if (XeMedia::is($file)) { $media = XeMedia::make($file); } ### 섬네일 생성 * 지원되는 섬네일 생성 타입 - fit : 지정된 사이즈에 꽉차고 넘치는 영역은 무시 - letter : 지정된 사이즈안에 이미지가 모두 들어가도록 생성 - widen : 가로 기준으로 생성 - heighten : 세로 기준으로 생성 - stretch : 비율을 무시하고 지정된 사이즈로 변경 - spill : 지정된 사이즈에 꽉차고 넘치는 영역을 보존 - crop : 지정된 좌표로부터 지정된 사이즈만큼 잘라냄 php $thumbnails = XeMedia::createThumbnails($file, 'letter'); 두번째 인자로 타입을 전달하지 않으면 config 에 설정된 타입으로 생성 > crop 의 경우 별도의 좌표가 필요하기 때문에 자동 섬네일 생성 사용에 추천되지 않음 ### 원본 미디어를 통한 섬네일 반환 php $thumbnails = Image::getThumbnails($media);
Author: XE Developers (developers@xpressengine.com)
Example #1
0
 /**
  * Get site representative image
  *
  * @return Image
  */
 public function getSiteImage()
 {
     if (!$this->image && $this->get('uuid')) {
         $files = $this->storage->getsByTargetId($this->get('uuid'));
         if (count($files) > 0) {
             $file = current($files);
             $this->image = $this->media->make($file);
         }
     }
     return $this->image;
 }
Example #2
0
 /**
  * Get site representative image
  *
  * @return Image
  */
 public function getSiteImage()
 {
     if (!$this->image && $this->get('uuid')) {
         $class = $this->storage->createModel();
         $files = $class->getByFileable($this->get('uuid'));
         if (count($files) > 0) {
             $file = $files instanceof Collection ? $files->first() : current($files);
             $this->image = $this->media->make($file);
         }
     }
     return $this->image;
 }
 /**
  * Get files of target used
  *
  * @param string $targetId target identifier
  * @return File[]
  */
 public function getFiles($targetId)
 {
     $data = [];
     $fileClass = $this->storage->getModel();
     $files = $fileClass::getByFileable($targetId);
     foreach ($files as $file) {
         $thumbnails = null;
         if ($this->mediaManager->is($file)) {
             $imgClass = $this->mediaManager->getHandler(Media::TYPE_IMAGE)->getModel();
             $thumbnails = $imgClass::getThumbnails($this->mediaManager->make($file), static::THUMBNAIL_TYPE);
         }
         $file->setRelation('thumbnails', $thumbnails);
         $data[] = $file;
     }
     return $data;
 }
 /**
  * file upload
  *
  * @param Request       $request      request
  * @param EditorHandler $handler      editor handler
  * @param Storage       $storage      storage
  * @param MediaManager  $mediaManager media manager
  * @param string        $instanceId   instance id
  * @return RendererInterface
  */
 public function fileUpload(Request $request, EditorHandler $handler, Storage $storage, MediaManager $mediaManager, $instanceId)
 {
     $uploadedFile = null;
     if ($request->file('file') !== null) {
         $uploadedFile = $request->file('file');
     } elseif ($request->file('image') !== null) {
         $uploadedFile = $request->file('image');
     }
     if ($uploadedFile === null) {
         throw new InvalidArgumentException();
     }
     $config = $handler->get($instanceId)->getConfig();
     if (!$config->get('uploadActive') || Gate::denies('upload', new Instance($handler->getPermKey($instanceId)))) {
         throw new AccessDeniedHttpException();
     }
     if ($config->get('fileMaxSize') * 1024 * 1024 < $uploadedFile->getSize()) {
         throw new HttpException(Response::HTTP_REQUEST_ENTITY_TOO_LARGE, xe_trans('xe::msgMaxFileSize', ['fileMaxSize' => $config->get('fileMaxSize'), 'uploadFileName' => $uploadedFile->getClientOriginalName()]));
     }
     $extensions = array_map(function ($v) {
         return trim($v);
     }, explode(',', $config->get('extensions', '')));
     if (array_search('*', $extensions) === false && !in_array(strtolower($uploadedFile->getClientOriginalExtension()), $extensions)) {
         throw new HttpException(Response::HTTP_NOT_ACCEPTABLE, xe_trans('xe::msgAvailableUploadingFiles', ['extensions' => $config->get('extensions'), 'uploadFileName' => $uploadedFile->getClientOriginalName()]));
     }
     $file = $storage->upload($uploadedFile, EditorHandler::FILE_UPLOAD_PATH);
     $media = null;
     $thumbnails = null;
     if ($mediaManager->is($file) === true) {
         $media = $mediaManager->make($file);
         $thumbnails = $mediaManager->createThumbnails($media, EditorHandler::THUMBNAIL_TYPE);
         $media = $media->toArray();
         if (!empty($thumbnails)) {
             $info['thumbnails'] = $thumbnails;
         }
     }
     return XePresenter::makeApi(['file' => $file->toArray(), 'media' => $media, 'thumbnails' => $thumbnails]);
 }
 private function beforeSetUp(MediaManager $manager)
 {
     $manager->extend(Media::TYPE_IMAGE, $this->handler);
 }