Início Rápido
Este guia ajudará você a começar rapidamente com Sharp e aprender operações básicas de processamento de imagem.
Uso Básico
Importar Sharp
javascript
import sharp from 'sharp';Ou usando CommonJS:
javascript
const sharp = require('sharp');Ler Imagem
Sharp suporta vários formatos de entrada:
javascript
// Ler de arquivo
const image = sharp('input.jpg');
// Ler de Buffer
const image = sharp(buffer);
// Ler de Stream
const image = sharp(stream);Operações Básicas
Redimensionar
javascript
// Redimensionar para tamanho especificado
await sharp('input.jpg')
.resize(300, 200)
.toFile('output.jpg');
// Manter proporção
await sharp('input.jpg')
.resize(300, null) // Largura 300, altura automática
.toFile('output.jpg');
// Usar diferentes modos de ajuste
await sharp('input.jpg')
.resize(300, 200, {
fit: 'cover', // Cortar para ajustar
position: 'center' // Cortar centralizado
})
.toFile('output.jpg');Conversão de Formato
javascript
// Converter para JPEG
await sharp('input.png')
.jpeg({ quality: 80 })
.toFile('output.jpg');
// Converter para WebP
await sharp('input.jpg')
.webp({ quality: 80 })
.toFile('output.webp');
// Converter para PNG
await sharp('input.jpg')
.png({ compressionLevel: 9 })
.toFile('output.png');Corte
javascript
// Cortar região especificada
await sharp('input.jpg')
.extract({ left: 100, top: 100, width: 200, height: 200 })
.toFile('cropped.jpg');Rotação
javascript
// Rotacionar 90 graus
await sharp('input.jpg')
.rotate(90)
.toFile('rotated.jpg');Operações Avançadas
Efeitos de Filtro
javascript
// Desfoque
await sharp('input.jpg')
.blur(5)
.toFile('blurred.jpg');
// Nitidez
await sharp('input.jpg')
.sharpen()
.toFile('sharpened.jpg');
// Escala de cinza
await sharp('input.jpg')
.grayscale()
.toFile('grayscale.jpg');Ajuste de Cor
javascript
// Ajustar brilho
await sharp('input.jpg')
.modulate({ brightness: 1.2 })
.toFile('bright.jpg');
// Ajustar contraste
await sharp('input.jpg')
.modulate({ contrast: 1.5 })
.toFile('contrast.jpg');
// Ajustar saturação
await sharp('input.jpg')
.modulate({ saturation: 0.8 })
.toFile('desaturated.jpg');Opções de Saída
Salvar em Arquivo
javascript
await sharp('input.jpg')
.resize(300, 200)
.toFile('output.jpg');Saída para Buffer
javascript
const buffer = await sharp('input.jpg')
.resize(300, 200)
.jpeg()
.toBuffer();Saída para Stream
javascript
sharp('input.jpg')
.resize(300, 200)
.jpeg()
.pipe(fs.createWriteStream('output.jpg'));Tratamento de Erros
javascript
try {
await sharp('input.jpg')
.resize(300, 200)
.toFile('output.jpg');
} catch (error) {
console.error('Processamento de imagem falhou:', error);
}Otimização de Performance
Processamento em Stream
javascript
// Usar stream para arquivos grandes
const pipeline = sharp()
.resize(300, 200)
.jpeg({ quality: 80 });
fs.createReadStream('large-input.jpg')
.pipe(pipeline)
.pipe(fs.createWriteStream('output.jpg'));Processamento Concorrente
javascript
// Processar múltiplas imagens simultaneamente
const promises = images.map(image =>
sharp(image)
.resize(300, 200)
.jpeg()
.toBuffer()
);
const results = await Promise.all(promises);Exemplo Completo
javascript
import sharp from 'sharp';
import fs from 'fs';
async function processImage() {
try {
// Criar miniatura
await sharp('input.jpg')
.resize(150, 150, { fit: 'cover' })
.jpeg({ quality: 90 })
.toFile('thumbnail.jpg');
// Criar imagem de tamanho médio
await sharp('input.jpg')
.resize(800, 600, { fit: 'inside' })
.webp({ quality: 80 })
.toFile('medium.webp');
// Criar imagem de tamanho grande
await sharp('input.jpg')
.resize(1920, 1080, { fit: 'inside' })
.jpeg({ quality: 85 })
.toFile('large.jpg');
console.log('Processamento de imagem concluído!');
} catch (error) {
console.error('Processamento falhou:', error);
}
}
processImage();Próximos Passos
Agora que você aprendeu o uso básico do Sharp, pode:
- Ver Documentação da API para aprender todos os métodos disponíveis
- Aprender Exemplos Avançados para dominar mais técnicas
- Entender Otimização de Performance para melhorar a eficiência de processamento