/**
  * Generate and save the thumbnail
  *
  * @param string $prefix The thumbnail prefix
  * @param array $dimensions Array of thumbnail dimensions
  * @param string $thumbnailMethod Which engine to use to make thumbnails
  * @return void
  */
 public function makeThumbnail($prefix, array $dimensions, $thumbnailMethod = 'gd')
 {
     $this->setImagine($thumbnailMethod);
     $image = $this->getImagine()->open($this->Path->fullPath());
     if (isset($dimensions['crop']) && $dimensions['crop'] === true) {
         $image = $this->thumbnailCropScale($image, $dimensions['w'], $dimensions['h']);
     } else {
         $image = $this->thumbnailScale($image, $dimensions['w'], $dimensions['h']);
     }
     $image->save($this->Path->fullPath($prefix), ['jpeg_quality' => 100, 'png_compression_level' => 9]);
 }
 /**
  * Generate and save the thumbnail
  *
  * @param string $prefix The thumbnail prefix
  * @param array $config Array of thumbnail config
  * @param string $thumbnailMethod Which engine to use to make thumbnails
  * @return void
  */
 public function makeThumbnail($prefix, array $config, $thumbnailMethod = 'gd')
 {
     $defaultConfig = ['jpeg_quality' => 100, 'png_compression_level' => 9];
     $config = array_merge($defaultConfig, $config);
     $this->setImagine($thumbnailMethod);
     $image = $this->getImagine()->open($this->Path->fullPath());
     if (isset($config['crop']) && $config['crop'] === true) {
         $image = $this->thumbnailCropScale($image, $config['w'], $config['h']);
     } else {
         $image = $this->thumbnailScale($image, $config['w'], $config['h']);
     }
     unset($config['crop'], $config['w'], $config['h']);
     $image->save($this->Path->fullPath($prefix), $config);
 }