/** * Returns a thumbnail of the given asset * * If the maximum width / height is not specified or exceeds the original asset's dimensions, the width / height of * the original asset is used. * * @param AssetInterface $asset The asset to render a thumbnail for * @param ThumbnailConfiguration $configuration * @return Thumbnail * @throws \Exception */ public function getThumbnail(AssetInterface $asset, ThumbnailConfiguration $configuration) { $thumbnail = $this->thumbnailRepository->findOneByAssetAndThumbnailConfiguration($asset, $configuration); if ($thumbnail === null) { if (!$asset instanceof ImageInterface) { throw new NoThumbnailAvailableException(sprintf('ThumbnailService could not generate a thumbnail for asset of type "%s" because currently only Image assets are supported.', get_class($asset)), 1381493670); } $thumbnail = new Thumbnail($asset, $configuration); $this->thumbnailRepository->add($thumbnail); $asset->addThumbnail($thumbnail); // Allow thumbnails to be persisted even if this is a "safe" HTTP request: $this->persistenceManager->whiteListObject($thumbnail); $this->persistenceManager->whiteListObject($thumbnail->getResource()); } return $thumbnail; }
/** * Refreshes a thumbnail and persists the thumbnail * * @param Thumbnail $thumbnail * @return void */ public function refreshThumbnail(Thumbnail $thumbnail) { $thumbnail->refresh(); $this->persistenceManager->whiteListObject($thumbnail); if (!$this->persistenceManager->isNewObject($thumbnail)) { $this->thumbnailRepository->update($thumbnail); } }
/** * Returns a thumbnail of the given asset * * If the maximum width / height is not specified or exceeds the original asset's dimensions, the width / height of * the original asset is used. * * @param AssetInterface $asset The asset to render a thumbnail for * @param integer $maximumWidth The thumbnail's maximum width in pixels * @param integer $maximumHeight The thumbnail's maximum height in pixels * @param string $ratioMode Whether the resulting image should be cropped if both edge's sizes are supplied that would hurt the aspect ratio * @param boolean $allowUpScaling Whether the resulting image should be upscaled * @return Thumbnail * @throws \Exception */ public function getThumbnail(AssetInterface $asset, $maximumWidth = NULL, $maximumHeight = NULL, $ratioMode = ImageInterface::RATIOMODE_INSET, $allowUpScaling = NULL) { $thumbnail = $this->thumbnailRepository->findOneByAssetAndDimensions($asset, $ratioMode, $maximumWidth, $maximumHeight, $allowUpScaling); if ($thumbnail === NULL) { if (!$asset instanceof ImageInterface) { throw new NoThumbnailAvailableException(sprintf('ThumbnailService could not generate a thumbnail for asset of type "%s" because currently only Image assets are supported.', get_class($asset)), 1381493670); } $thumbnail = new Thumbnail($asset, $maximumWidth, $maximumHeight, $ratioMode, $allowUpScaling); $this->thumbnailRepository->add($thumbnail); $asset->addThumbnail($thumbnail); // Allow thumbnails to be persisted even if this is a "safe" HTTP request: $this->persistenceManager->whiteListObject($thumbnail); $this->persistenceManager->whiteListObject($thumbnail->getResource()); } return $thumbnail; }