13/03/2024
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.
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";
}
}
?>
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.
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/';
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();
}
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";
}
}
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.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.