Справочники, инструменты, документация

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

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

}