Задать вопрос
Kulaxyz
@Kulaxyz
Могу лучше

Как оптимизировать качество картинок в Laravel?

Здравствуйте, коллеги) Сайт на Laravel, для сохранения изображений в Storage использую Intervention. Проблема в сильной потере качества. Как можно повысить качество, жертвуя памятью и размерами картинок?
Вот скрин того, как выглядят картинки на сайте
5d83d85db7083969940533.png
А вот сам код:
foreach ($images as $image) {
                $fileName = time() . '.' . $image->getClientOriginalExtension();
                $destination_path = 'public/images/posts';
                $img = Image::make($image->getRealPath());

                $img->stream(); 

                Storage::disk('local')->put($destination_path . '/' . $fileName, $img, 'public');
                $postImage = new \App\Image;
                $postImage->path = $fileName;
                $postImage->post_id = $post->id;
                $postImage->post()->associate($post);
                $postImage->save();
            }
  • Вопрос задан
  • 433 просмотра
Подписаться 1 Простой 14 комментариев
Решения вопроса 1
Kulaxyz
@Kulaxyz Автор вопроса
Могу лучше
Короче опишу, в чём была проблема у меня. Загружая изображения, я не менял исходный размер, при этом, отображаясь, картинка должна была занимать 100% ширины блока, что ~600px. Поэтому при загрузке изображений с расширением 300:400 оно таким и оставалось, а потом расширялось до 600px из-за чего качество сильно и страдало. Решил проблему этими строками:
$img->resize(650, null, function ($constraint) {
                    $constraint->aspectRatio();
                });
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
anton_reut
@anton_reut
Начинающий веб-разработчик
Документацию читать не пробовал? image.intervention.io/api/save
// save the image jpg format defined by third parameter
$img->save('public/foo', 80, 'jpg');
// 80 это качество джипега

Я в Ларе вообще не алё и то нагуглил за минуту.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы