Como Converter Arquivos JPG em WEBP usando PHP

Aprenda a converter imagens JPG em WEBP automaticamente usando PHP e Imagick

13/03/2024

Como Converter Arquivos JPG em WEBP usando PHP

Como Converter Arquivos JPG em WEBP usando PHP

Introdução

Este artigo é um guia prático para programadores que desejam otimizar as imagens de seus sites convertendo arquivos JPG para o formato WEBP usando PHP. A conversão para WEBP pode resultar em imagens de alta qualidade com tamanhos de arquivo significativamente menores, melhorando o desempenho do site. Abordaremos como automatizar esse processo em lote, facilitando a otimização de múltiplas imagens de uma só vez.

Código Pronto para Uso

Para facilitar o processo de conversão de imagens em seu projeto, fornecemos um script PHP completo e pronto para uso. Este código automatiza a conversão de arquivos JPG em WEBP dentro de uma pasta específica, verificando também se a conversão já foi realizada anteriormente para evitar processamentos desnecessários. Copie o script a seguir e integre-o ao seu projeto para começar a otimizar suas imagens imediatamente.


<?php

// Define o diretório de origem das imagens
$directory = './images/';

// Função para converter uma imagem JPG em WEBP
function convertJPGToWEBP($filePath, $quality = 75) {
    // Gera o nome do arquivo de saída substituindo a extensão .jpg por .webp
    $outputFile = preg_replace('/\.jpg$/i', '.webp', $filePath);
    
    // Verifica se o arquivo WEBP já existe para evitar reprocessamento
    if (file_exists($outputFile)) {
        echo "O arquivo WEBP já existe, conversão não necessária: " . $outputFile . "\n";
        return;
    }

    // Cria uma nova instância do Imagick para o arquivo especificado
    $image = new Imagick($filePath);
    
    // Define a qualidade de compactação
    $image->setImageCompressionQuality($quality);
    
    // Define o formato da imagem para WEBP
    $image->setImageFormat('webp');
    
    // Salva a imagem convertida no disco
    $image->writeImage($outputFile);
    
    // Limpa a instância do Imagick para liberar recursos
    $image->clear();
    
    echo "Convertido com sucesso: " . $filePath . " para " . $outputFile . "\n";
}

// Lê todos os arquivos JPG no diretório especificado
$files = glob($directory . '*.jpg');

foreach ($files as $file) {
    // Chama a função de conversão para cada arquivo, se necessário
    try {
        convertJPGToWEBP($file);
    } catch (Exception $e) {
        echo "Erro ao converter o arquivo: $file. Erro: " . $e->getMessage() . "\n";
    }
}

?>

Explicando o Código

Para garantir que o processo de conversão de imagens seja compreendido em detalhes, vamos dividir o script em partes menores e explicar cada uma delas. Isso ajudará a entender como o script funciona e como ele pode ser ajustado para atender às necessidades específicas do seu projeto.

Definição do Diretório de Origem

O primeiro passo é definir o diretório onde estão localizadas as imagens que serão convertidas. Utilizamos a variável $directory para armazenar o caminho até essa pasta. É importante que o caminho esteja correto e que o script tenha permissão de leitura e escrita no diretório especificado.

$directory = './images/';

Função de Conversão

A função convertJPGToWEBP é o coração do script. Ela recebe como parâmetros o caminho do arquivo JPG a ser convertido e a qualidade desejada para o arquivo WEBP resultante. Dentro dessa função, realizamos a conversão propriamente dita e salvamos o novo arquivo no mesmo diretório do original.

function convertJPGToWEBP($filePath, $quality = 75) {
    $outputFile = preg_replace('/\.jpg$/i', '.webp', $filePath);
    if (file_exists($outputFile)) {
        echo "O arquivo WEBP já existe, conversão não necessária: " . $outputFile . "\n";
        return;
    }
    $image = new Imagick($filePath);
    $image->setImageCompressionQuality($quality);
    $image->setImageFormat('webp');
    $image->writeImage($outputFile);
    $image->clear();
}

Processamento em Lote

Para processar todas as imagens JPG no diretório de origem, utilizamos a função glob para encontrar todos os arquivos que correspondam ao padrão especificado. Em seguida, iteramos sobre cada arquivo encontrado e chamamos a função convertJPGToWEBP para realizar a conversão.

$files = glob($directory . '*.jpg');
foreach ($files as $file) {
    try {
        convertJPGToWEBP($file);
    } catch (Exception $e) {
        echo "Erro ao converter o arquivo: $file. Erro: " . $e->getMessage() . "\n";
    }
}

Observações Importantes

  • Fazer um Backup do Diretório de Imagens: Antes de iniciar a conversão, é crucial fazer um backup completo do diretório de imagens. Isso assegura que você tenha uma cópia segura de todas as suas imagens originais, prevenindo a perda de dados em caso de erros durante o processo de conversão.
  • Rodar o Código Localmente: O recomendado é executar este script localmente, utilizando o comando php nome-do-script.php no terminal. Isso permite um controle melhor e reduz o risco de sobrecarregar o servidor de produção com processamentos intensivos de CPU, especialmente ao lidar com um grande número de imagens.
  • Instalação do PHP: Se você não tem o PHP instalado em sua máquina, é necessário fazer o download e instalar a versão mais recente. Visite o site oficial do PHP para obter as instruções de download e instalação.

Conclusão

Com esse script, você pode facilmente converter todas as suas imagens JPG para o formato WEBP, melhorando o desempenho do seu site ao reduzir o tamanho dos arquivos de imagem sem sacrificar a qualidade visual.

Este artigo nas redes sociais: Facebook, Twitter/X, LinkedIn, Telegram, Pinterest, Tumblr, Flipboard, Mastodon

Domínios hospedados
Clientes satisfeitos