/**
  * Handle request to convert it to a Response object.
  */
 public function handle()
 {
     try {
         if (!$this->request->query->has('image')) {
             throw new FileNotFoundException("No valid image path found in URI", 1);
         }
         $nativePath = $this->configuration->getImagesPath() . '/' . $this->request->query->get('image');
         $this->nativeImage = new File($nativePath);
         $this->parseQuality();
         if ($this->configuration->hasCaching()) {
             $cache = new FileCache($this->request, $this->nativeImage, $this->configuration->getCachePath(), $this->logger, $this->quality, $this->configuration->getTtl(), $this->configuration->getGcProbability(), $this->configuration->getUseFileChecksum());
             $cache->setDispatcher($this->dispatcher);
             /** @var Response response */
             $this->response = $cache->getResponse(function (InterventionRequest $interventionRequest) {
                 return $interventionRequest->processImage();
             }, $this);
         } else {
             $this->processImage();
             $this->response = new Response((string) $this->image->encode(null, $this->quality), Response::HTTP_OK, ['Content-Type' => $this->image->mime(), 'Content-Disposition' => 'filename="' . $this->nativeImage->getFilename() . '"', 'X-Generator-First-Render' => true]);
             $this->response->setLastModified(new \DateTime('now'));
         }
     } catch (FileNotFoundException $e) {
         $this->response = $this->getNotFoundResponse($e->getMessage());
     } catch (\RuntimeException $e) {
         $this->response = $this->getBadRequestResponse($e->getMessage());
     }
 }
示例#2
0
 public function getFormat(Image $image)
 {
     $allowed = ['gif' => 'image/gif', 'jpg' => 'image/jpeg', 'pjpg' => 'image/jpeg', 'png' => 'image/png'];
     if (array_key_exists($this->fm, $allowed)) {
         return $this->fm;
     }
     if ($format = array_search($image->mime(), $allowed, true)) {
         return $format;
     }
     return 'jpg';
 }
示例#3
0
文件: Output.php 项目: awebc/web_xbf
 /**
  * Resolve format.
  * @param  string $format The format.
  * @return string The resolved format.
  */
 public function getFormat(Image $image, $format)
 {
     $allowed = ['image/jpeg' => 'jpg', 'image/png' => 'png', 'image/gif' => 'gif'];
     if (in_array($format, $allowed, true)) {
         return $format;
     }
     $mime = $image->mime();
     if (isset($allowed[$mime])) {
         return $allowed[$mime];
     }
     return 'jpg';
 }
示例#4
0
 /**
  * Save file to database and to our filesystem.
  */
 public static function make(Picture $picture, Image $image, $identifier)
 {
     $file = new self();
     $file->picture_id = $picture->id;
     $file->identifier = $identifier;
     $file->mime = $image->mime();
     $file->extension = $image->extension;
     $file->width = $image->width();
     $file->height = $image->height();
     self::checkDirPermission();
     $image->save($file->getFilePath());
     $file->save();
 }
示例#5
0
 /**
  * Save an Picture object to the file system.
  * Runs OptimizeFileJob on the file after it is saved.
  *
  * @param Picture        $picture
  * @param string         $directory One of the *_DIR constants.
  * @param string         $filename
  * @param ImageFile|null $originalImageFile
  *
  * @throws Exception
  * @return ImageFile
  */
 public function savePicture(Picture $picture, $directory = self::IMAGE_DIR, $filename = null, ImageFile $originalImageFile = null)
 {
     if (!$filename) {
         $mime = $picture->mime();
         if (empty($mime)) {
             $mime = 'image/jpeg';
         }
         $extension = $this->getExtensionForMime($mime);
         $filename = $this->generateFilename($extension);
     }
     $relativePath = $directory . '/' . $filename;
     // Save locally
     if (!$this->savePictureLocally($picture, $relativePath)) {
         throw new Exception('Unable to save file locally.');
     }
     $imageFile = new ImageFile(['originalImageFileId' => $originalImageFile ? $originalImageFile->getId() : null, 'directory' => $directory, 'filename' => $filename, 'width' => $picture->getWidth(), 'height' => $picture->getHeight(), 'size' => $picture->filesize()]);
     $imageFile->save();
     // Optimize and copy to remote storage
     $this->dispatch(new OptimizeFileJob($imageFile));
     return $imageFile;
 }
示例#6
0
 public function getInfo()
 {
     return ['mime' => $this->image->mime(), 'width' => $this->image->width(), 'height' => $this->image->height(), 'extension' => $this->image->extension, 'filename' => $this->image->filename, 'filesize' => $this->image->filesize()];
 }
 /**
  * Guess extension .
  *
  * @param Image $image
  * @return string
  */
 protected function guessExtension(Image $image)
 {
     $guesser = ExtensionGuesser::getInstance();
     return $guesser->guess($image->mime());
 }
示例#8
0
 /**
  * Create image record.
  *
  * @return Image
  */
 protected function createDatabaseRecord()
 {
     return Image::create(['hash' => $this->hash, 'mime_type' => $this->image->mime(), 'uploaded_at' => $this->uploaded_at->timestamp]);
 }
示例#9
0
 private function buildAssetFromImage(\Intervention\Image\Image $image, $organization, $name, $type)
 {
     $mime = $image->mime();
     $name = new Name($name);
     $guid = Guid::generate();
     $asset = Asset::register($name, $guid, $mime, $organization);
     $asset->setTitle($name);
     if (isset($type)) {
         $asset->setType($type);
     }
     return $asset;
 }