예제 #1
0
 /**
  * @param Image $image
  *
  * @return ImageMetadata
  */
 public function getImageMetadata(Image $image)
 {
     if (!$image->isHydrated()) {
         throw new ImageManagerException(ImageManager::ERR_NOT_HYDRATED);
     }
     if ($image instanceof ImageVariation) {
         throw new ImageManagerException(self::ERR_SOURCE_IMAGE);
     }
     $metadata = new ImageMetadata();
     $data_inspector = new DataInspector();
     $data = $image->getData();
     if ($data_inspector->isPdf($data)) {
         $format = ImageFormat::PDF();
     } else {
         $format = $data_inspector->getImageFormat($data);
     }
     $metadata->setMimetype($data_inspector->guessMimeType($data))->setFormat($format)->setResolution($this->getImageResolution($image))->setOrientation($this->getImageOrientation($image))->setDimensions($this->getImageDimensions($image));
     return $metadata;
 }
예제 #2
0
 /**
  * Hydrate and render an image variation with parent data.
  *
  * You can use this to create a variation with a source image
  *
  * @param Image          $parent
  * @param ImageVariation $variation
  *
  * @return ImageVariation
  *
  * @throws BadImageException
  * @throws ImageManagerException
  */
 protected function hydrateVariation(Image $parent, ImageVariation &$variation)
 {
     if (!$parent->isHydrated()) {
         throw new ImageManagerException('Parent: ' . self::ERR_NOT_HYDRATED);
     }
     $quality = $variation->getQuality() ?: 90;
     if ($quality < 1) {
         $quality = 1;
     } elseif ($quality > 100) {
         $quality = 100;
     }
     $variation->setData(null);
     $input = $parent->getData();
     foreach ($this->encoders as $encoder) {
         if ($encoder->supports($input)) {
             $encoder->setData($input);
             $variation->setData($encoder->createVariation($variation->getFormat(), $quality, $variation->getDimensions(), $variation->getCropDimensions()));
             $encoder->setData(null);
             break;
         }
     }
     if (!$variation->getData()) {
         throw new NoSupportedEncoderException('There is no known encoder for this data type');
     }
     return $variation;
 }