public function loadFromContainer(AssetContainer $assetContainer)
 {
     $stream = $assetContainer->getStream();
     $this->readImageFile($stream);
     fclose($stream);
     $this->setDefaultQuality();
 }
 /**
  *
  * @param File|AssetContainer $file
  * @return string URL to thumbnail
  */
 protected function getThumbnailURLForFile(AssetContainer $file)
 {
     if (!$file->exists()) {
         return null;
     }
     // Attempt to generate image at given size
     $width = $this->getPreviewMaxWidth();
     $height = $this->getPreviewMaxHeight();
     if ($file->hasMethod('ThumbnailURL')) {
         return $file->ThumbnailURL($width, $height);
     }
     if ($file->hasMethod('Thumbnail')) {
         return $file->Thumbnail($width, $height)->getURL();
     }
     if ($file->hasMethod('Fit')) {
         return $file->Fit($width, $height)->getURL();
     }
     // Check if unsized icon is available
     if ($file->hasMethod('getIcon')) {
         return $file->getIcon();
     }
     return null;
 }
 /**
  * Helper method to get local filesystem path for this file
  *
  * @param AssetContainer $asset
  * @return string
  */
 public static function getLocalPath(AssetContainer $asset)
 {
     if ($asset instanceof Folder) {
         return self::base_path() . '/' . $asset->getFilename();
     }
     if ($asset instanceof File) {
         $asset = $asset->File;
     }
     // Extract filesystem used to store this object
     /** @var AssetStoreTest_SpyStore $assetStore */
     $assetStore = Injector::inst()->get('AssetStore');
     $fileID = $assetStore->getFileID($asset->Filename, $asset->Hash, $asset->Variant);
     $filesystem = $assetStore->getProtectedFilesystem();
     if (!$filesystem->has($fileID)) {
         $filesystem = $assetStore->getPublicFilesystem();
     }
     /** @var Local $adapter */
     $adapter = $filesystem->getAdapter();
     return $adapter->applyPathPrefix($fileID);
 }
 public function loadFromContainer(AssetContainer $assetContainer)
 {
     // If we're working with image resampling, things could take a while.  Bump up the time-limit
     increase_time_limit_to(300);
     $this->resetResource();
     // Skip non-existant files
     if (!$assetContainer->exists()) {
         return;
     }
     // Skip if failed before
     $filename = $assetContainer->getFilename();
     $hash = $assetContainer->getHash();
     $variant = $assetContainer->getVariant();
     if ($this->failedResample($filename, $hash, $variant)) {
         return;
     }
     // Mark as potentially failed prior to creation, resetting this on success
     $content = $assetContainer->getString();
     $image = imagecreatefromstring($content);
     if ($image === false) {
         $this->markFailed($filename, $hash, $variant);
         return;
     }
     imagealphablending($image, false);
     imagesavealpha($image, true);
     // save alphablending setting (important)
     $this->setImageResource($image);
 }
Пример #5
0
 /**
  * Assign this temporary file into the given destination
  *
  * @param array $tmpFile
  * @param string $filename
  * @param AssetContainer|AssetStore $container
  * @return array
  */
 protected function storeTempFile($tmpFile, $filename, $container)
 {
     // Save file into backend
     $conflictResolution = $this->replaceFile ? AssetStore::CONFLICT_OVERWRITE : AssetStore::CONFLICT_RENAME;
     $config = array('conflict' => $conflictResolution, 'visibility' => $this->getDefaultVisibility());
     return $container->setFromLocalFile($tmpFile['tmp_name'], $filename, null, null, $config);
 }