В этом уроке мы собираемся конвертировать форматы изображений друг в друга с помощью PHP. Иногда не все браузеры могут поддерживать формат изображения, например, Safari не поддерживает формат изображения WebP. Затем мы должны изменить его на другие поддерживаемые форматы.

Конвертировать JPG в формат изображения WebP

Под кодом находится конвертер jpg в png.

function hs_jpg2webp($source_file, $destination_file, $compression_quality = 100)
{
    $image = imagecreatefromjpeg($source_file);
    $result = imagewebp($image, $destination_file, $compression_quality);
    if (false === $result) {
        return false;
    }
    imagedestroy($image);
    return $destination_file;
}

Использование функции:

echo hs_jpg2webp('img/a.jpg','img/b.webp',100);

Конвертировать PNG в формат изображения WebP

function hs_png2webp($source_file, $destination_file, $compression_quality = 100)
{
    $image = imagecreatefrompng($source_file);
    imagepalettetotruecolor($image);
    imagealphablending($image, true);
    imagesavealpha($image, true);
    $result = imagewebp($image, $destination_file, $compression_quality);
    if (false === $result) {
        return false;
    }
    imagedestroy($image);
    return $destination_file;
}

Использование функции:

echo hs_png2webp('img/a.png','img/b.webp',100);

Конвертировать GIF в формат изображения WebP

function hs_gif2webp($source_file, $destination_file, $compression_quality = 100)
{
    $image = imagecreatefromgif($source_file);
    imagepalettetotruecolor($image);
    $result = imagewebp($image, $destination_file, $compression_quality);
    if (false === $result) {
        return false;
    }
    imagedestroy($image);
    return $destination_file;
}

Использование функции:

echo hs_gif2webp('img/a.gif','img/b.webp',100);

Конвертировать WebP в JPG

function hs_webp2jpg($source_file, $destination_file, $compression_quality = 100)
{
    $image = imagecreatefromwebp($source_file);
    $result = imagejpeg($image, $destination_file, $compression_quality);
    if (false === $result) {
        return false;
    }
    imagedestroy($image);
    return $destination_file;
}

Использование функции:

echo hs_webp2jpg('img/a.webp','img/b.jpg',100);

Конвертировать WebP в PNG

function hs_webp2png($source_file, $destination_file, $compression_quality = 100)
{
    $image = imagecreatefromwebp($source_file);
    $result = imagepng($image, $destination_file, $compression_quality);
    if (false === $result) {
        return false;
    }
    imagedestroy($image);
    return $destination_file;
}

В этой функции качество сжатия находится в диапазоне от 0 до 9.

Использование функции:

echo hs_webp2png('img/a.webp','img/b.png',9);

Конвертировать WebP в GIF

function hs_webp2gif($source_file, $destination_file, $colors_count = 16)
{
    $image = imagecreatefromwebp($source_file);
    imagetruecolortopalette($image, false, $colors_count);
    $result = imagegif($image, $destination_file);
    if (false === $result) {
        return false;
    }
    imagedestroy($image);
    return $destination_file;
}

В формате gif мы добавляем аргумент подсчета цветов, чтобы определить количество используемых цветов.

Использование функции:

echo hs_webp2png('img/a.webp','img/b.gif',100);

Подробнее и примеры на тему Преобразование JPG, PNG, GIF и WebP в PHP