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

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âmetro Descrição Tipo Padrão
src Caminho da imagem string Obrigatório

Retorna

Argumento Descrição Tipo
promise O elemento de imagem já carregado Promise<ImgSource>

cutRound

Recorta uma imagem com cantos arredondados.

Parâmetros

Parâmetro Descrição Tipo Padrão
img Imagem de origem ImgSource Obrigatório
radius Raio do canto number Obrigatório

Retorna

Argumento Descrição Tipo
canvas Canvas fora da tela ImgSource

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âmetro Descrição Tipo Padrão
img Imagem de origem ImgSource Obrigatório
opacity Opacidade, de 0 a 1 number Obrigatório

Retorna

Argumento Descrição Tipo
canvas Canvas fora da tela ImgSource

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âmetro Descrição Tipo Padrão
radius Raio do desfoque number Obrigatório
sigma Desvio padrão number radius / 3

Retorna

Argumento Descrição Tipo
matrix Array plano de (2r+1)² elementos, por linhas, somando 1 number[]

Tipos

type ImgSource = HTMLImageElement | HTMLCanvasElement;

Relacionado