Images

Images

Esta página aborda a inserção de imagens raster em uma página, a inspeção das imagens já incorporadas em um documento e a redução de seu tamanho. Para renderizar um page para uma imagem, veja Conversion.


Incorporando uma Imagem

Page.AddImage() coloca bytes de imagem JPEG, PNG, BMP ou TIFF em um retângulo de precisão de pixel na página.

// Source is 1280x1014; scaled to 60% of the page width, aspect preserved.
const srcW = 1280;
const srcH = 1014;
const imgW = pageWidth(page) * 0.6;
const imgH = (imgW * srcH) / srcW;
const x = (pageWidth(page) - imgW) / 2;
const y = (pageHeight(page) - imgH) / 2;

page.AddImage(imageBytes, [x, y, x + imgW, y + imgH]);

AddImageOptions aceita opacity, um format explícito quando não pode ser detectado a partir dos bytes, um tag (um StructElement ao qual anexar a imagem em um documento marcado), e um layer para conteúdo opcional.


Inspecionando Imagens Incorporadas

Page.Images lista cada imagem já presente na página como ImageInfo[], sem decodificar nenhum dado de pixel — cada entrada expõe Width, Height, Bits, ColorSpace e Filter. Chame Decode() em um ImageInfo para obter seus bytes de amostra brutos, Replace() para substituir por novos dados de imagem no local, ou Remove() para excluí-la da página.

for (const img of page.Images) {
  console.log(img.Width, img.Height, img.ColorSpace, img.Filter);
}

Otimizando Imagens

Document.Optimize() reduz o tamanho do arquivo em todo o documento; passe uma opção images (OptimizeImageOptions, com dpi e quality campos) para também reduzir a amostragem e re-codificar imagens incorporadas como parte da mesma passagem.

const report = doc.Optimize({ images: { dpi: 150, quality: 80 } });

Dicas e Melhores Práticas

  • Page.Images lê apenas os metadados — decodificar os dados de pixel completos de cada imagem com Decode() antecipadamente é desnecessário se você só precisa das dimensões ou do espaço de cores.
  • Passe um format explícito em AddImageOptions quando os bytes de origem vêm de um fluxo ou buffer sem uma extensão de arquivo confiável para detecção.
  • Recorra a Document.Optimize({ images: { dpi, quality } }) para reduzir um documento com muitas imagens, em vez de decodificar manualmente e re-adicionar cada uma.
  • O retângulo de Page.AddImage() define o tamanho colocado diretamente — escale o retângulo de destino para a proporção da própria imagem de origem para evitar esticá-la.

Problemas Comuns

ProblemaCausaCorreção
A imagem aparece esticada ou achatadaO alvo rect passado para AddImage() não corresponde à proporção da imagem de origemCalcule a largura/altura do retângulo a partir das próprias dimensões da imagem de origem
Page.AddImage() coloca o formato erradoO formato dos bytes da imagem não pôde ser detectado de forma confiávelPasse um format explícito em AddImageOptions
O documento está muito maior que o esperado após a adição de imagensAs imagens foram incorporadas em resolução e qualidade completasChame Document.Optimize({ images: { dpi, quality } }) para reduzir a amostragem e re-codificar

FAQ

Como coloco uma imagem em uma página?

Chame page.AddImage(imageBytes, rect), onde rect é um retângulo [x0, y0, x1, y1] em pontos de espaço de página.

Como listo as imagens já presentes em uma página sem decodificá-las?

Leia page.Images — um ImageInfo[] que expõe Width, Height, ColorSpace e Filter para cada imagem sem decodificar os dados de pixel.

Posso reduzir o tamanho do arquivo de um documento comprimindo suas imagens?

Sim — chame Document.Optimize({ images: { dpi, quality } }), que reduz a amostragem e re-codifica as imagens incorporadas como parte de uma passagem de otimização em todo o documento.

Como a incorporação de uma imagem difere da renderização de uma página para uma imagem?

Page.AddImage() coloca bytes de imagem raster em uma página existente. Page.ToImage() (veja Conversion) faz o inverso — renderizando a página inteira em bytes PNG.


API Reference Resumo

Classe/MétodoDescrição
Page.AddImage()Coloque os bytes da imagem em um retângulo na página
AddImageOptionsOpções para AddImage(): opacity, format, tag, layer
Page.ImagesCada imagem já presente na página, como ImageInfo[] somente de metadados
ImageInfo.Decode() / Replace() / Remove()Leia os dados de pixel, troque por novos bytes ou remova uma imagem
Document.Optimize()Reduza o tamanho do arquivo em todo o documento, opcionalmente reduzindo a amostragem de imagens via images: { dpi, quality }

Ver também

 Português