В новой записи я вам покажу функцию которая позволяет в упрощённой форме конвертировать изображения в WEBP формат. Данная функция принимает 1 параметр — ссылку на файл и на выходе отдаёт ссылку на конвертированную версию файла в формате WEBP.
Функция convertWebp() в самом начале проверяет существует ли файл, который вы хотите конвертировать. Далее в переменную $newImgPath записывается новый URL для файла, уже в WEBP формате.
Ниже, в зависимости от текущего формата используются разные функции для преобразования файла и изменения формата.
function convertWebp($src) {
if(file_exists($_SERVER['DOCUMENT_ROOT'] . $src)) {
$newImgPath = str_replace(array('.jpg', '.jpeg', '.gif', '.png'), '.webp', $src);
if(!file_exists($_SERVER['DOCUMENT_ROOT'] . $newImgPath)) {
if ($src && function_exists('imagewebp')) {
if (!file_exists($_SERVER['DOCUMENT_ROOT'].$newImgPath)) {
$info = getimagesize($_SERVER['DOCUMENT_ROOT'].$src);
if ($info !== false && ($type = $info[2])) {
switch ($type) {
case IMAGETYPE_JPEG:
$newImg = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT'].$src);
break;
case IMAGETYPE_GIF:
$newImg = imagecreatefromgif($_SERVER['DOCUMENT_ROOT'].$src);
break;
case IMAGETYPE_PNG:
$newImg = imagecreatefrompng($_SERVER['DOCUMENT_ROOT'].$src);
imagepalettetotruecolor($newImg);
imagealphablending($newImg, true);
imagesavealpha($newImg, true);
break;
}
if ($newImg) {
imagewebp($newImg, $_SERVER['DOCUMENT_ROOT'].$newImgPath, 90);
imagedestroy($newImg);
}
}
}
}
}
return $newImgPath;
} else {
return false;
}
}