crazycartoonsru
@crazycartoonsru

Как конвертировать изображение в webp формат после загрузки на сайт?

Всем привет. На сайте есть возможность загружать изображения, после загрузки они имеют формат jpeg, я так понял вот этот код отвечает за это:
//imagejpeg( $image );
imagesavealpha($image, true);
@imagejpeg( $image, $totalPath, 90 );

imagedestroy( $image );
imagedestroy( $logoImage );
}
}

Пытаюсь изменить код так, чтобы изображения после загрузки были в webp формате, перепробовал разные варианты, но они все равно остаются в jpeg формате. Я изменил код на этот:

//imagewebp( $image );
imagepalettetotruecolor($img);
imagealphablending($img, true);
imagesavealpha($img, true);
imagewebp($img, $new, 100);

imagedestroy( $image );
imagedestroy( $logoImage );
}
}
  • Вопрос задан
  • 234 просмотра
Пригласить эксперта
Ответы на вопрос 2
DanArst
@DanArst
Гриффиндор в моде при любой погоде!
Можно было доки почитать. Например что за изображение вы хотите уничтожить?
imagedestroy($image);
Когда в коде вы конвертируете в webp изображение $img. И вопрос: как задается $new? Что это за переменная?
imagewebp($img, $new, 100);
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Я изменил код на этот:
Во первых, код принимает загрузку только жпег и пнг,
во вторых, включите вывод ошибок, иначе будете до бесконечности гадать что не так,
в третьих вполне возможно (и наиболее вероятно) что текущая версия гд на вашем сервере просто не поддерживает вебп.
Для начала так:
...
ini_set('error_reporting',E_ALL);
ini_set('display_errors', 1);
        if (move_uploaded_file($_FILES['image']['tmp_name'][$tmp_i], $totalPath)) {
							$image;
							if ($ext == 'jpg' or $ext == 'jpeg') {
								$image = imagecreatefromjpeg( $totalPath );
							}
							if ($ext == 'png') {
								$image = imagecreatefrompng( $totalPath );
							}
							
							if (isset($image)) {
								
								$imageWidth=imagesx($image);
								$imageHeight=imagesy($image); 
								$newImageWidth = 600;
								$newImageHeight = ($newImageWidth * $imageHeight) / $imageWidth;
								
								$image = imagescale( $image, $newImageWidth, $newImageHeight);
								
								$logoWidth=imagesx($logoImage);
								$logoHeight=imagesy($logoImage);
								
								imagecopy(
								  $image,
								  $logoImage,
								  0, ($newImageHeight/2) - ($logoHeight/2),
								  0, 0,
								  $logoWidth, $logoHeight 
								);
								imagewebp( $image, $totalPath, 90 );

								imagedestroy( $image );
								imagedestroy( $logoImage );
							}
						}
Ответ написан
Ваш ответ на вопрос

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

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