Example #1
0
 /**
  * Create thumbnails and upload to cloud storage.
  *
  * @param strin $dir
  * @param UploadImage $image
  * @param Stock\Image $model
  *
  * @return boolean
  */
 protected static function createThumbnailsAndUpload($dir, $image, $model)
 {
     // Get extension
     $extensionRaw = strtolower(substr(strrchr($model->filename, '.'), 1));
     switch ($extensionRaw) {
         case 'jpeg':
         case 'jpg':
             $extension = 'jpg';
             break;
         case 'png':
             $extension = 'png';
             break;
         default:
             $extension = 'unknown';
             Log::warning("Unknown extension: {$extensionRaw}!");
     }
     $originalFilename = $dir . 'original.' . $extension;
     Log::debug("Creating original image file {$originalFilename} #{$model->id}");
     $image->save($originalFilename);
     // Create thumbnail for each format
     foreach (Image::$formats as $name => $options) {
         Log::debug("Scale image for format {$name} #{$model->id}");
         if ($options['width'] === null || $options['height'] === null) {
             $image->resize($options['width'], $options['height'], function ($constraint) {
                 $constraint->aspectRatio();
             });
         } else {
             $image->fit($options['width'], $options['height']);
         }
         $filename = $dir . $name . '.' . $extension;
         $image->save($filename);
         // Upload resized image
         self::uploadToCloud($model, $filename, $name);
         // Restore state from $image->backup();
         $image->reset();
         @unlink($filename);
     }
     // Upload original
     self::uploadToCloud($model, $originalFilename, 'original');
     @unlink($originalFilename);
     return true;
 }