Formate
Decodificação de imagem convert formatos de imagem suportados em objetos PixelMap para exibição e processamento.
Formatos suportados
| Formato | Descrição |
|---|---|
| JPEG | Formato comum |
| PNG | Suporte a canal alpha |
| GIF | Animações |
| WebP | Formato moderno |
| BMP | Bitmap |
| SVG | Gráfico vetorial |
| ICO | Ícones |
| DNG | Formato RAW de câmeras |
| HEIC | Alta eficiência |
Pré-visualização RAW
| Formato | Extensão |
|---|---|
| CR2/CR3 | Canon |
| ARW | Sony |
| NEF/NRW | Nikon |
Recurso disponível a partir da API 22 para miniaturas embutidas.
Importar módulos
import { image } from '@kit.ImageKit';
import { ResourceManager, RawFileDescriptor } from '@kit.LocalizationKit';
Obter dados de imagem
Caminho no sandbox
function obterCaminho(contexto: common.Context, nomeArq: string): string {
return contexto.cacheDir + '/' + nomeArq;
}
Descritor de arquivo
function obterDescritorArquivo(caminho: string): number {
const arquivo = fs.openSync(caminho, fs.OpenMode.READ_ONLY);
return arquivo.fd;
}
Buffer de conteúdo
async function obterBufferConteudo(recursoMgr: ResourceManager, nomeRecurso: string): Promise<arraybuffer> {
const dados = await recursoMgr.getRawFileContent(nomeRecurso);
return dados.buffer.slice(0);
}</arraybuffer>
Descritor bruto
async function obterDescritorBruto(recursoMgr: ResourceManager, nomeRecurso: string): Promise<rawfiledescriptor> {
return recursoMgr.getRawFd(nomeRecurso);
}</rawfiledescriptor>
Criar fonte de imagem
// Criar de diferentes fontes
const fonteImagem = image.createImageSource(caminho);
// const fonteImagem = image.createImageSource(fd);
// const fonteImagem = image.createImageSource(bufferArray);
// const fonteImagem = image.createImageSource(rawFd);
Decodificar para PixelMap
Opções de decodificação
| Parâmetro | Tipo | Função |
|---|---|---|
| editavel | boolean | Permite edição |
| formatoDesejado | PixelMapFormat | Formato de pixels (ex: RGBA_8888) |
| faixaDinamica | DecodingDynamicRange | Intervalo dinâmico |
Exemplo de decodificação
async function gerarPixelMap(fonte: image.ImageSource): Promise<image.pixelmap> {
const opcoes: image.DecodingOptions = {
editavel: false,
formatoDesejado: image.PixelMapFormat.RGB_565,
faixaDinamica: image.DecodingDynamicRange.SDR
};
return fonte.createPixelMap(opcoes);
}</image.pixelmap>
Liberar recursos
function liberarRecursos(mapaPixels?: image.PixelMap, fonte?: image.ImageSource) {
mapaPixels?.release();
fonte?.release();
}
Reucrsos liberados automtaicamente se usado com componente Image.
Fluxo principal
1. Obter dados da imagem
2. Criar ImageSource
3. Definir opções de decodificação
4. Gerar PixelMap
5. Liberar recursos quando necessário