Laravel 5: Показать изображение в представлении с помощью метода resize () Intervention

1

Я могу показать измененное изображение с этим кодом внутри маршрута,

Route::get('/create', function(){
    $img = Image::make('assets/tes.jpg')->resize(200, 200);
    return $img->response('jpg');
}

Но как я могу вернуть измененное изображение с Controler to View?

Вот мой контроллер

publc function show($id){
$image = /*What code here ? resize assets/tes.jpg to 200x200*/
return view('some', compact('image'));
}

Вот мой взгляд some.blade.php

<img src="$image">

или я должен изменить размер при загрузке и сохранить его, а не изменять размер на лету?

Спасибо, любая помощь оценили.

  • 1
    Вы всегда можете использовать собственный кэш изображений Intervention, если хотите изменить размер миниатюр на лету. Но лучший подход заключается в изменении размера при загрузке, а затем в потоковом режиме миниатюры соответствующего размера на ваших веб-страницах.
Теги:
laravel-5
intervention

1 ответ

3

я должен изменить размер при загрузке и сохранить его, а не изменять размер на лету

Да, если вас беспокоит секундная смена (но заметное время), требуется перемасштабирование и рендеринг изображений "на лету", тогда вам будет лучше с повторной калибровкой при загрузке и сохранении различных размеров.

Представление о том, как отображать изображение с измененным размером в представлении:

Вы можете просто указать URL своего маршрута:

Я использую public_path("/assets/$img") потому что предполагаю, что ваши изображения находятся в public\assets

Маршрут:

Route::get('/assets/{img}',function($img){
    return \Image::make(public_path("/assets/$img"))->resize(200, 200)->response('jpg');
});

Вы даже можете играть с размерами:

Route::get('/assets/{img}/{h}/{w}',function($img, $h=200, $w=200){
        return \Image::make(public_path("/assets/$img"))->resize($h, $w)->response('jpg');
 });

Позже в представлении:

<img src="{!! url('assets', ['tes.jpg']) !}}">

Ещё вопросы

Сообщество Overcoder
Наверх
Меню