Trabalhando com imagens em TypeScript: bibliotecas e ferramentas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalhando com imagens em TypeScript: bibliotecas e ferramentas



TypeScript é uma linguagem de programação poderosa que estende o JavaScript com tipagem estática. No desenvolvimento de aplicações web modernas, surge frequentemente a necessidade de processar imagens: redimensionar, converter formatos, aplicar filtros ou analisar pixels. Neste artigo, veremos as principais bibliotecas e ferramentas para trabalhar com imagens em TypeScript, suas capacidades e exemplos de uso.



Bibliotecas populares para processamento de imagens



Existem várias bibliotecas populares que se integram perfeitamente com TypeScript. Vamos analisar cada uma delas em detalhes.



Sharp



Sharp é uma biblioteca de alto desempenho para processamento de imagens, baseada no módulo nativo libvips. É ideal para aplicações server-side em Node.js. Sharp suporta vários formatos (JPEG, PNG, WebP, AVIF, TIFF) e permite realizar operações com consumo mínimo de memória.



Exemplo de uso com TypeScript:



import sharp from 'sharp';

async function resizeImage(inputPath: string, outputPath: string, width: number, height: number): Promise<void> { try { await sharp(inputPath) .resize(width, height, { fit: 'cover' }) .toFile(outputPath); console.log('Imagem redimensionada com sucesso'); } catch (error) { console.error('Erro ao processar:', error); }}

// UsoresizeImage('input.jpg', 'output.jpg', 800, 600);


Principais recursos do Sharp:

  • Redimensionamento e corte
  • Conversão de formatos
  • Aplicação de marcas d'água
  • Rotação e espelhamento
  • Controle de qualidade de compressão


Jimp



Jimp (JavaScript Image Manipulation Program) é uma biblioteca puramente JavaScript que não requer dependências nativas. Funciona tanto no Node.js quanto no navegador. Jimp é mais fácil de instalar, mas mais lento que o Sharp no processamento de arquivos grandes.



Exemplo de trabalho com Jimp em TypeScript:



import Jimp from 'jimp';

async function applyFilter(imagePath: string, outputPath: string): Promise<void> { const image = await Jimp.read(imagePath); image .resize(300, Jimp.AUTO) // Mantém as proporções .greyscale() // Converte para tons de cinza .contrast(0.5) // Aumenta o contraste .write(outputPath); console.log('Filtro aplicado');}

applyFilter('photo.jpg', 'photo-edited.jpg');


Recursos do Jimp:

  • Operações básicas: resize, crop, rotate
  • Efeitos de cor: sepia, greyscale, brightness
  • Trabalho com transparência e sobreposição de texto
  • Suporte a mais de 20 formatos de imagem


Canvas API para aplicações no navegador



Se você está desenvolvendo uma aplicação cliente em TypeScript, pode usar a Canvas API integrada. Não é uma biblioteca, mas uma interface web padrão para desenho e processamento de imagens. TypeScript fornece tipos para todos os métodos do Canvas.



Exemplo de carregamento e processamento de imagem no Canvas:



function processImageOnCanvas(imageUrl: string): void {  const canvas = document.createElement('canvas');  const ctx = canvas.getContext('2d');    if (!ctx) {    throw new Error('Canvas não suportado');  }    const img = new Image();  img.onload = () => {    canvas.width = img.width / 2;    canvas.height = img.height / 2;        ctx.drawImage(img, 0, 0, canvas.width, canvas.height);        // Aplica efeito de desfoque    ctx.filter = 'blur(4px)';    ctx.drawImage(canvas, 0, 0);        // Obtém dados dos pixels    const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);    console.log('Primeiro pixel:', imageData.data.slice(0, 4));  };                    

Recommendations