Как генерировать миниатюры в Laravel5.2 Когда я отображаю изображение

Когда я пишу код для отображения изображения в блейд-файле, в это время делаются эскизы изображений, и я могу каждый раз указывать высоту, ширину и время, когда мне нужно изображение, которое генерирует такой тип эскизов изображений, чтобы я мог создать несколько больших пальцев одного и того же изображения на одном сайте. ,

{{$page->image,100,100)}}

Или же

<td><?php if ($page->image) { ?><img src="{{ url('/upload/pages/'.$page->image,100,200) }}"/><?php } ?></td>

Пожалуйста, дайте предложение, как сделать этот вид эскизов заранее.

1

Решение

Рациональный способ сделать это будет:

  1. Создайте контроллер и метод (или метод на существующем контроллере), который принимает имя изображения, ширину & параметры высоты. Этот метод может использовать пакет вмешательства, который был упомянут в комментариях. Логика должна быть — сначала проверить, существует ли изображение указанных размеров, если нет — создать его (используя Intervention, очень просто). Затем — выведите содержимое изображения (не забудьте добавить правильный заголовок).

  2. Добавьте этот контроллер / метод в rout.php, например:

    Route :: get (‘thumbnails / {image}’, ‘Controller @ getThumbnail’);

  3. В ваших шаблонах Blade вы бы просто ссылались на изображения типа ‘/path/image.jpg?width=200&высота = 100’ . Не нужно заботиться о том, существует ли файл с этими размерами или нет.

PS. Facebook обслуживает изображения таким образом. Это в основном как маленький прокси-сервер (ваш метод работает как прокси) между пользователем и исходным изображением.

0

Другие решения

вам нужно потребовать вмешательства, а затем добавить что-то вроде этого в свой контроллер загрузки:

...
$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);

...
0

Вы можете изменить размер этого изображения на лету с помощью микросервиса и кэшировать миниатюры в CDN. Пожалуйста, посмотрите Вот

<img src="{{ imgProxy('https://your-microservice.com/your-image.jpg', 100, 200) }}"/>
0
По вопросам рекламы [email protected]