Conversão de Imagem com ImageSource: Transformar em PixelMap no HarmonyOS

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

Tags: HarmonyOS ImageSource PixelMap Decodificação de Imagem Formato Imagem

Publicado em 8-23 01:55