2015-01-25 2 views
1

мне интересно, если кто-нибудь знает хорошую стратегию для решения этой проблемы:Создание уменьшенных изображений для социальной сети сайта с помощью Laravel

Я создаю сайт социальной сети с помощью Laravel 4. Пользователи могут загружать фотографии на свои собственные галерея. Эти изображения могут быть любой формы и размера, но галерея в их профиле отображает только уменьшенное изображение и уменьшенное изображение (200px x 200px), которое вы можете щелкнуть, чтобы просмотреть полное изображение.

Im использование плагина Laravel Вмешательство прямо сейчас, которое сохраняет исходное изображение, затем изменяет размеры и обрезает это изображение и сохраняет его снова (так что теперь у меня есть 2 копии). Затем я показываю обрезанное/измененное изображение как миниатюру, которая ссылается на исходное изображение полного размера. Тем не менее, я считаю, что копирование каждого изображения будет утомительной тратой пространства на моем сервере, поскольку на сайт могут быть загружены тысячи изображений.

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

Прекрасным примером того, что я хочу достичь, является то, как Facebook посещает изображения на квадратах в галерее картинок пользователей или как они обрезаются и изменяются по размеру в новостной ленте, когда пользователь загружает несколько изображений в статус.

Любые советы приветствуются!

ответ

0

Да Вмешательство позволит вам манипулировать и отображать на лету тоже. Вот простой пример (очевидно, вы на самом деле сделать это с помощью контроллера и т.д.)

Route::get('img/profile/picture.jpg', function(){ 
    $img = Image::make('path/to/profile/picture.jpg'); 

    // resize, crop, whatever 

    return $img->response(); 
}); 

И тогда вы просто установить правильный URI для этого маршрута в src вашего изображения.

Intervention Docs

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

1

Вы видели League/Glide еще? Это в основном оболочка для Intervention/Image и Intervention/ImageCache. Glide's Laravel setup video заставит вас установить за две минуты (обратите внимание на второй пример).

Смежные вопросы