/**
  *
  * @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;
 }
 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);
 }