THotPDF.DecodeLoadedImageRegionAtResolution Method
Descodifica um retângulo em coordenadas de origem, permitindo que o descodificador escolha um nível de resolução inferior que ainda satisfaça o tamanho de saída pedido
Declaração
function DecodeLoadedImageRegionAtResolution(
AImageStream: THPDFStreamObject;
RegionLeft, RegionTop, RegionRight, RegionBottom,
TargetPixelWidth, TargetPixelHeight: Integer): TBitmap;
Unidade
HPDFDoc
Parâmetros
| Nome | Finalidade |
|---|---|
AImageStream | Fluxo XObject de imagem carregado para descodificar |
RegionLeft | Coordenada de origem esquerda inclusiva |
RegionTop | Coordenada de origem superior inclusiva |
RegionRight | Coordenada de origem direita exclusiva |
RegionBottom | Coordenada de origem inferior exclusiva |
TargetPixelWidth | Minimum useful decoded width before final rendering scale |
TargetPixelHeight | Minimum useful decoded height before final rendering scale |
Valor devolvido
Devolve um bitmap recém-alocado para a região limitada não vazia, ou nil quando a imagem ou a geometria pedida não pode ser descodificada
Resolution selection
- O JPEG 2000 seleciona a maior redução por potência de dois cuja largura e altura descodificadas continuam ambas a ser, no mínimo, o tamanho em píxeis pedido
- A seleção nunca subamostra nenhuma das dimensões e evita, por isso, uma ampliação desnecessária antes do desenho
- A seleção nativa da região e a seleção da resolução são combinadas antes da reconstrução wavelet e da expansão dos píxeis
- Os workers JPEG 2000 isolados contra crashes recebem o mesmo pedido de redução e usam um budget de saída correspondentemente menor
- Quando o fallback nativo trata uma região que intersecta vários tiles do codestream, os tiles independentes são descodificados em simultâneo dentro dos limites de cancelamento, número de workers, saída e memória de pico
- Os resultados paralelos são compostos numa ordem row-major estável, e um budget de trabalho insuficiente seleciona de forma transparente o caminho sequencial da região
- Uma imagem JPEG em DeviceRGB ou DeviceGray passa por um descodificador DCT de tamanho reduzido quando a região ou o tamanho pedido difere da imagem completa: descodifica numa escala DCT reduzida que continua a cobrir o pedido e devolve a região reamostrada exatamente para o tamanho pedido
- Os restantes formatos de imagem suportados, e as imagens JPEG em outros espaços de cor, preservam a descodificação exata da região e deixam qualquer escalamento final para quem chama
- O chamador é proprietário de um bitmap devolvido não nulo e deve libertá-lo
Exemplo
Preview := PDF.DecodeLoadedImageRegionAtResolution(
ImageStream, 0, 0, SourceWidth, SourceHeight, 320, 200);
try
Canvas.StretchDraw(TargetRect, Preview);
finally
Preview.Free;
end;