Я сейчас смотрю на этот способ изменить размер моего изображения в Laravel перед загрузкой.
Мой образ обрабатывается в промежуточном программном обеспечении, прежде чем продолжить, как обсуждалось в этот вопрос.
Я хочу иметь возможность манипулировать изображением в запросе, а затем передать его обратно контроллеру, делающему запрос на продолжение. Это возможно?
Мой код пока
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\UploadedFile;
use Symfony\Component\HttpFoundation\Response;
use Intervention\Image\ImageManagerStatic as ImageResize;
class ImageInterceptor
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
foreach (array_filter(array_flatten($request->files->all())) as $file) {
$size = $file->getClientSize();
$onemb = pow(1024, 2);
if ($size > $onemb * 5) {
//Return back, image is too big!
return redirect()->back()->withErrors(array('Image' => 'Sorry, ' . $file->getClientOriginalName() . ' is too large.'));
} else {
//Ok, resize the image
$dimensions = getimagesize($file);
$height = $dimensions[1];
$width = $dimensions[0];
$newHeight;
$newWidth;
//Set new size
if($height > $width){
//If portrait photo, set max height;
$newHeight = 500;
$newWidth = $width;
} else {
//If landscape photo, set max width;
$newHeight = $height;
$newWidth = 500;
}
$resized = ImageResize::make($file);
$resized->resize($newHeight,$newWidth);
}
}
return $next($request);
}
}
Как я могу получить это, чтобы я мог запустить $resized->resize()
метод для каждого изображения внутри запроса, а затем вернуть запрос, чтобы контроллер мог завершить их загрузку?
Задача ещё не решена.
Других решений пока нет …