Изменение размера файла изображения laravel 5
Я установил патч "вмешательство/изображение", "обязательный мастер", чтобы уменьшить размер моего изображения до 300 на 300. Я сделал несколько формуляров, и мне всегда кажется, что это одна и та же ошибка.
Вызов функции-члена resize() в строке
В чем ошибка?
Контроллер
public function updateProfile() {
$file = Input::file('imagem');
$profileData = Input::except('_token');
$validation = Validator::make($profileData, User::$profileData);
if ($validation->passes()) {
if ($file == null) {
User::where('id', Input::get('id'))->update($profileData);
Session::flash('message', 'Perfil editado com sucesso');
return view('backend/perfil.index');
}
$file = array_get($profileData,'imagem');
$destinationPath = 'imagens/perfil';
$extension = $file->getClientOriginalExtension();
$filename = rand(11111, 99999) . '.' . $extension;
$reduzir = $filename -> resize (300,300);
$profileData['imagem'] = $filename;
$upload_success = $file->move($destinationPath, $filename);
User::where('id', Input::get('id'))->update($profileData);
Session::flash('message', 'Perfil editado com sucesso');
return Redirect::to('backend/perfil');
} else {
return Redirect::to('backend/perfil')->withInput()->withErrors($validation);
}
}
4
Author: Jose Cerejo, 2015-11-15
1 answers
Проблема может быть связана с этими причинами
Вы добавили эти псевдонимы в свой app.php
'aliases' => [
//add these three at the bottom
'Form' => Illuminate\Html\FormFacade::class,
'HTML' => Illuminate\Html\HtmlFacade::class,
'Image' => Intervention\Image\Facades\Image::class
],
Я полагаю, что у вас уже есть помощник по форме и html.
И используйте эту функцию в контроллере
Т.е. просто передайте значение изображения и размера в качестве параметра этой функции
В контроллере вы просто вызываете приведенную ниже функцию, например
$resizedImage = $this->resize($image, $request->get('image_size'));
И функция resize()
была приведена ниже
private function resize($image, $size)
{
try
{
$extension = $image->getClientOriginalExtension();
$imageRealPath = $image->getRealPath();
$thumbName = 'thumb_'. $image->getClientOriginalName();
//$imageManager = new ImageManager(); // use this if you don't want facade style code
//$img = $imageManager->make($imageRealPath);
$img = Image::make($imageRealPath); // use this if you want facade style code
$img->resize(intval($size), null, function($constraint) {
$constraint->aspectRatio();
});
return $img->save(public_path('images'). '/'. $thumbName);
}
catch(Exception $e)
{
return false;
}
1
Author: Sulthan Allaudeen, 2015-11-15 04:41:37