Skip to content

Processamento de imagens

Auxiliares de imagem apoiados em canvas. Cada transformação devolve um canvas fora da tela em vez de uma data URL, então dá para encadear várias sem codificar e decodificar um PNG a cada passo.

Uso

ts
import { getImage, cutRound, opacity } from 'ranuts/utils';

const img = await getImage('/avatar.png');
const rounded = cutRound(img, 24);
const faded = opacity(rounded, 0.5);
document.body.appendChild(faded as HTMLCanvasElement);

API

getImage

Carrega uma imagem pelo caminho; resolve assim que ela é decodificada.

Parâmetros

ParâmetroDescriçãoTipoPadrão
srcCaminho da imagemstringObrigatório

Retorna

ArgumentoDescriçãoTipo
promiseO elemento de imagem já carregadoPromise<ImgSource>

TIP

A rejeição carrega o evento error cru, não um objeto Error. O onerror de uma <img> não traz motivo nenhum — os navegadores o escondem de propósito quando a falha é de origem cruzada —, então embrulhá-lo num Error só fabricaria uma mensagem falsa.

cutRound

Recorta uma imagem com cantos arredondados.

Parâmetros

ParâmetroDescriçãoTipoPadrão
imgImagem de origemImgSourceObrigatório
radiusRaio do cantonumberObrigatório

Retorna

ArgumentoDescriçãoTipo
canvasCanvas fora da telaImgSource

opacity

Aplica uma opacidade uniforme a uma imagem.

Prefere o ctx.filter (que roda na GPU); onde ele não existe, recorre a reescrever o canal alfa pixel a pixel. Esse caminho alternativo pula os pixels cujo alfa já é 0, de modo que as regiões totalmente transparentes não acabam com um valor diferente de zero.

Parâmetros

ParâmetroDescriçãoTipoPadrão
imgImagem de origemImgSourceObrigatório
opacityOpacidade, de 0 a 1numberObrigatório

Retorna

ArgumentoDescriçãoTipo
canvasCanvas fora da telaImgSource

getMatrix

Monta uma matriz gaussiana de pesos em duas dimensões, normalizada para que somem 1.

A normalização é indispensável: sem ela, convolver com a matriz muda o brilho geral da imagem. sigma vale por padrão radius / 3; com esse valor a gaussiana já decaiu para quase zero ao chegar ao raio, então o erro de truncamento é desprezível.

Parâmetros

ParâmetroDescriçãoTipoPadrão
radiusRaio do desfoquenumberObrigatório
sigmaDesvio padrãonumberradius / 3

Retorna

ArgumentoDescriçãoTipo
matrixArray plano de (2r+1)² elementos, por linhas, somando 1number[]

Tipos

ts
type ImgSource = HTMLImageElement | HTMLCanvasElement;

Relacionado

Publicado sob a licença MIT.