Когда я пишу код для отображения изображения в блейд-файле, в это время делаются эскизы изображений, и я могу каждый раз указывать высоту, ширину и время, когда мне нужно изображение, которое генерирует такой тип эскизов изображений, чтобы я мог создать несколько больших пальцев одного и того же изображения на одном сайте. ,
{{$page->image,100,100)}}
Или же
<td><?php if ($page->image) { ?><img src="{{ url('/upload/pages/'.$page->image,100,200) }}"/><?php } ?></td>
Пожалуйста, дайте предложение, как сделать этот вид эскизов заранее.
Рациональный способ сделать это будет:
Создайте контроллер и метод (или метод на существующем контроллере), который принимает имя изображения, ширину & параметры высоты. Этот метод может использовать пакет вмешательства, который был упомянут в комментариях. Логика должна быть — сначала проверить, существует ли изображение указанных размеров, если нет — создать его (используя Intervention, очень просто). Затем — выведите содержимое изображения (не забудьте добавить правильный заголовок).
Добавьте этот контроллер / метод в rout.php, например:
Route :: get (‘thumbnails / {image}’, ‘Controller @ getThumbnail’);
В ваших шаблонах Blade вы бы просто ссылались на изображения типа ‘/path/image.jpg?width=200&высота = 100’ . Не нужно заботиться о том, существует ли файл с этими размерами или нет.
PS. Facebook обслуживает изображения таким образом. Это в основном как маленький прокси-сервер (ваш метод работает как прокси) между пользователем и исходным изображением.
вам нужно потребовать вмешательства, а затем добавить что-то вроде этого в свой контроллер загрузки:
...
$file = $request->file('files');
$extension = $file->getClientOriginalExtension();
Storage::disk('local')->put('/'.$file->getFilename().$extension, File::get($file));
$thumb1 = ImageManagerStatic::make($file->getRealPath())->resize(200, 200, function ($constraint) {
$constraint->aspectRatio(); //maintain image ratio
})->save('thumb1'.$extension);$thumb2 = ImageManagerStatic::make($file->getRealPath())->resize(400, 400, function ($constraint) {
$constraint->aspectRatio(); //maintain image ratio
})->save('thumb2'.$extension);
...
Вы можете изменить размер этого изображения на лету с помощью микросервиса и кэшировать миниатюры в CDN. Пожалуйста, посмотрите Вот
<img src="{{ imgProxy('https://your-microservice.com/your-image.jpg', 100, 200) }}"/>