Как преобразовать изображение PNG в изображение JPG в Laravel

Мне нужна помощь в преобразовании файлов PNG в JPG. Я попробовал этот стек, но безуспешно. Вы можете помочь мне?

HTML

<div class="custom-file">
<input type="file" class="custom-file-input" id="logo" name="logo" / >
<label class="custom-file-label" for="logo"></label>
</div>

ЛАРАВЕЛЬ

$imageName = time().'.'.$request->logo->getClientOriginalExtension();
$request->logo->move(public_path('/dist/img/logo'), $imageName);
$company->logo                      = $imageName;  
$company->save(); 

person Ricardo Custodio    schedule 11.05.2020    source источник


Ответы (3)


Возможно, ваш JPG Support отключен. проверьте, используя phpinfo().

Ссылка: https://stackoverflow.com/a/18821624/9533638

ИЛИ

вы можете использовать его для преобразования изображения png в jpg. это будет работать.

=> https://github.com/free-open-source/php-image-converter/blob/master/src/ImageConverter.php

person Muhammad Raza    schedule 11.05.2020

Это поможет вам:

$clientFile = pathinfo($_FILES['logo']['name']);
if($clientFlie['extension'] == 'png'){ 
    $ImageNameWithNewExtensionForClient = $clientFile['filename']."jpg";
 }

после того, как вы сможете переместить $ImageNameWithNewExtensionForClient на любой желаемый путь.

person EL AMRANI Mohamed Reda    schedule 11.05.2020

Сначала установите эту библиотеку. http://image.intervention.io/getting_started/installation

в контроллере импортируйте его,

use Intervention\Image\Facades\Image;

изменение в вашем коде

$image = $request->file('logo');
$imageName = time().'.'."jpg";

Image::make($image)->encode('jpg', 65)
            ->save(public_path('/dist/img/logo' . $imageName));
$company->logo                      = $imageName;  
$company->save(); 
person Anik Anwar    schedule 11.05.2020
comment
Спасибо! В БД файл ‹filename.jpg› в порядке, но файл не загружается в указанную папку. Любая помощь? - person Ricardo Custodio; 12.05.2020
comment
в общей папке? твой путь абсолютен? - person Anik Anwar; 12.05.2020
comment
для теста вы можете попробовать сохранить общедоступный корневой путь ('/'). Image::make($image)->encode('jpg', 65) ->save(public_path('/' . $imageName)); - person Anik Anwar; 13.05.2020
comment
хорошо, спасибо, но я не знаю, почему изображение исчезает. Я думаю, что преобразование в порядке, потому что имя хранится в БД. - person Ricardo Custodio; 13.05.2020