Функция для конвертирования изображений в WEBP формат на PHP — PROG-TIME

Функция для конвертирования изображений в WEBP формат на PHP

22.11.2022
Содержание:

В новой записи я вам покажу функцию которая позволяет в упрощённой форме конвертировать изображения в 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;
    }

}