public function generateThumbnails($folder, $file)
{
$folder = static::$app['path.base'] . $folder;
if (is_string($file)) {
$file = new UploadedFile($folder . $file, $file);
}
$thumbnails = array();
// Check the image type is valid by extension and mimetype
if ($this->verifyImageType($file)) {
$image = Image::make($folder . $file->getClientOriginalName());
foreach (static::$app['config']->get('cabinet::image_resize') as $image_params) {
$tempFile = clone $file;
// Add image manipulation to file name.
$tempFile->fileSystemName = $this->getBasename($file) . '_' . ($image_params[0] != null ? $image_params[0] : 'auto') . 'x' . ($image_params[1] != null ? $image_params[1] : 'auto') . (isset($image_params[2]) && $image_params[2] == true ? '_ratio' : '') . (isset($image_params[3]) && $image_params[3] == true ? '_upsized' : '') . '.' . $file->getClientOriginalExtension();
list($folder, $tempFile) = $this->resolveFileName($folder, $tempFile);
// Have to clone since we'll be doing this multiple times.
$clonedImage = clone $image;
if (!isset($image_params[2])) {
$image_params[2] = false;
}
if (!isset($image_params[3])) {
$image_params[3] = true;
}
$clonedImage->resize($image_params[0], $image_params[1], function ($constraint) use($image_params) {
if ($image_params[2]) {
$constraint->aspectRatio();
}
if ($image_params[3]) {
$constraint->upsize();
}
})->save($folder . $tempFile->fileSystemName);
$thumbnails[] = $tempFile;
// Image files can be big, free up memory.
unset($clonedImage);
unset($tempFile);
}
}
return $thumbnails;
}