Redimensionar imatges recursivament en directoris aniuats amb Laravel

Fent ús del package Intervention, redimensionar imatges recursivament en directoris aniuats amb Laravel.

/**
* resizing all images recursively in all directories in /storage/app/public/
*/
try {
    $this->info("LIST OF DIRECTORIES AND FILES AFFECTED\n--------------------------------------");
    foreach (Storage::directories('public') as $directory) { // -> '/storage/app/public/'
        $this->info($directory);
        $files = Storage::allFiles($directory);
        $i = 1;
        foreach ($files as $file) {                    
            $dir = substr($file, 0, strrpos($file, "/"));
            $this->info($file);
            $img = Image::make('storage/app/'.$file);
            $this->info($img);
            echo "Image " . $i . " OLD size: ".$img->filesize();
            $img->resize(400, 300, function ($constraint) { $constraint->aspectRatio(); })
            	->save(storage_path('app/' . $dir . '/new_name_'.$i.'.jpg')); 
            echo " NEW size: ".$img->filesize() . "\n";
            $i++;
        }
    }            
} catch (\Exception $e) {
    $this->info($e->getMessage());
}

Comentaris