Vous êtes ici : » Accueil» PHP » Convertir des images en WebP en utilisant PHP c’est facile

Convertir des images en WebP en utilisant PHP c’est facile

(Dernière mise à jour le: 13 octobre 2021)

Webp : un format d'image qui offre une qualité supérieure sans perte et avec compression WebP est un moderne format d’image qui offre une qualité supérieure sans perte et avec compression perte pour les images sur le Web. Utilisation de WebP, webmasters et web les développeurs peuvent créer des images plus petites et plus riches qui rendent le Web plus rapide.

Les images WebP sans perte sont 26% plus petites que les PNG. WebP les images avec perte sont 25-34% plus petites que les images JPEG comparables à l’équivalent SSIM Indice de qualité .

Lossless WebP prend en charge la transparence (également appelée canal alpha) à un coût de seulement 22% d’octets supplémentaires . Pour les cas où la compression RVB avec perte est acceptable, WebP avec perte prend également en charge la transparence , fournissant généralement Tailles de fichier 3× plus petites par rapport au PNG.

Extrait de code PHP pour convertir les images jpeg, png et gif au format d’image moderne WebP.

L’extrait de code PHP suivant accepte un chemin d’image, puis, selon les extensions PHP que vous avez installées, il utilise PHP GD ou Imagick pour convertir les images png, jpeg ou gif en WebP. En cas de succès, l’image WebP sera écrite dans le fichier et le nouveau chemin de fichier renvoyé.

<?php
/**
 * Générateur d'images au format Webp 
 * 
 * Utilisation mutuelle de Imagick or imagewebp pour générer les images webp
 * 
 * @param string $file chemin de l'image à convertir.
 * @param int $compression_quality qualité qui varie de 0 (pire qualité, plus petit fichier) à 100 (meilleure qualité, plus gros fichier). 
 * 
 * @return false|string Retour chemin de l'image générée, ou une valeur logique faut (false).
 */
function jcphp01_generate_webp_image($file, $compression_quality = 80)
{
    // voir si les fichiers existes
    if (!file_exists($file)) {
        return false;
    }

    // si le fichier existe, renvoi son chemin
    // ----------------------------------------------------
    $output_file = $file . '.webp';
    if (file_exists($output_file)) {
        return $output_file;
    }

    $file_type = strtolower(pathinfo($file, PATHINFO_EXTENSION));

    if (function_exists('imagewebp')) {

        switch ($file_type) {
            case 'jpeg':
            case 'jpg':
                $image = imagecreatefromjpeg($file);
                break;

            case 'png':
                $image = imagecreatefrompng($file);
                imagepalettetotruecolor($image);
                imagealphablending($image, true);
                imagesavealpha($image, true);
                break;

            case 'gif':
                $image = imagecreatefromgif($file);
                break;
            default:
                return false;
        }

        // Sauvegarde de l'image
        // ---------------------------------
        $result = imagewebp($image, $output_file, $compression_quality);
        if (false === $result) {
            return false;
        }

        // rendre disponible la mémoire utilisée
        // ----------------------------------------------------
        imagedestroy($image);

        return $output_file;
    } elseif (class_exists('Imagick')) {
        $image = new Imagick();
        $image->readImage($file);

        if ($file_type === 'png') {
            $image->setImageFormat('webp');
            $image->setImageCompressionQuality($compression_quality);
            $image->setOption('webp:lossless', 'true');
        }

        $image->writeImage($output_file);
        return $output_file;
    }

    return false;
}

Laisser un commentaire

Translate »