A era digital trouxe as imagens para o centro de nossa experiência de navegação. No entanto, o problema é que essas imagens muitas vezes ocupam uma largura de banda considerável, afetando o desempenho do site. Podemos combater isso reduzindo o tamanho das imagens por meio de um processo chamado Otimização de imagens. Neste artigo, exploraremos como converter arquivos de imagens como PNG e JPG para WebP e comprimi-los usando o Node.js.
Por que escolher o WebP?
O WebP, um formato de imagem moderno desenvolvido pelo Google, oferece compressão superior com e sem perdas para imagens na web. Ao converter arquivos PNG e JPG para WebP, podemos obter tamanhos de arquivo menores sem comprometer a qualidade da imagem, tornando nossos sites mais rápidos.
Configurando o Node.js
Antes de começarmos o processo de conversão, vamos garantir que o Node.js esteja instalado. Caso contrário, faça o download e instale de acordo com seu sistema operacional.
Instalando os módulos necessários
Vamos utilizar dois pacotes do npm: sharp para a conversão de imagens e imagemin-webp para a compressão de imagens.
npm install sharp imagemin imagemin-webp
Convertendo imagens para WebP
Vamos usar o módulo sharp para converter uma imagem PNG ou JPG para WebP. Isso é feito lendo o arquivo de entrada e transformando-o no formato WebP.
const sharp = require('sharp');
sharp('input.png')
.webp()
.toFile('output.webp')
.then(() => console.log('Conversão de imagem concluída.'))
.catch(err => console.error(err));
Comprimindo imagens WebP
Agora, vamos comprimir a imagem WebP convertida usando o módulo imagemin-webp.
const imagemin = require('imagemin');
const imageminWebp = require('imagemin-webp');
(async () => {
await imagemin(['output.webp'], {
destination: 'compressed_images',
plugins: [
imageminWebp({quality: 50})
]
});
console.log('Compressão de imagem concluída.');
})();
Código completo
const sharp = require('sharp');
const imagemin = require('imagemin');
const imageminWebp = require('imagemin-webp');
sharp('input.png')
.webp()
.toFile('output.webp')
.then(() => {
(async () => {
await imagemin(['output.webp'], {
destination: 'compressed_images',
plugins: [
imageminWebp({quality: 50})
]
});
console.log('Conversão e compressão de imagem concluídas.');
})();
})
.catch(err => console.error(err));
Este script completo converterá sua imagem para o formato WebP e a comprimirá.
Conclusão
Aí está: uma maneira eficiente de converter e comprimir PNG e JPG para WebP no Node.js. Agora você pode otimizar suas imagens, acelerar o tempo de carregamento do seu site e proporcionar uma melhor experiência ao usuário. Com um pouco de prática, essas etapas se tornarão naturais.
Perguntas frequentes
Por que devo usar o WebP em vez de PNG ou JPG? O WebP oferece uma compressão superior, reduzindo o tamanho do arquivo sem perda significativa de qualidade da imagem.
Por que precisamos comprimir imagens? A compressão de imagens reduz o tamanho do arquivo, o que pode melhorar drasticamente o tempo de carregamento do site e economizar largura de banda.
Posso usar outras linguagens de programação para essa tarefa? Sim, outras linguagens como Python, Java, etc., também possuem bibliotecas para conversão e compressão de imagens. No entanto, este tutorial foca no Node.js.
E se o processo de conversão ou compressão falhar? Verifique se o Node.js e todos os módulos necessários estão instalados corretamente. Se o problema persistir, o problema pode estar relacionado à própria imagem.
Posso ajustar o nível de compressão? Sim, o plugin
imagemin-webppermite ajustar o parâmetro de qualidade para controlar o nível de compressão.