THotPDF.AddImageWithSMask Método

 

THotPDF.AddImageWithSMask

THotPDF

 

Top  Previous  Next

Añade un XObject de imagen en color junto con un XObject de imagen de máscara suave PDF 1.4 (ISO 32000-1 8.9.5.4), de modo que la imagen resultante lleve transparencia completa por píxel en lugar del límite binario on/off de la ruta legada /ImageMask.

 

Sintaxis Delphi:

function AddImageWithSMask(Width, Height: Integer; const RGB: array of Byte; const Alpha: array of Byte): Integer;

function AddImageWithTransparency(Width, Height: Integer; const RGB: array of Byte; const Alpha: array of Byte): Integer;

function AddImageWithSMask32(Width, Height: Integer; const Pixels: array of Byte): Integer;

function AddImageWithTransparency32(Width, Height: Integer; const Pixels: array of Byte): Integer;

 

Sintaxis C++:

int AddImageWithSMask(int Width, int Height, const TBytes& RGB, const TBytes& Alpha);

int AddImageWithTransparency(int Width, int Height, const TBytes& RGB, const TBytes& Alpha);

int AddImageWithSMask32(int Width, int Height, const TBytes& Pixels);

int AddImageWithTransparency32(int Width, int Height, const TBytes& Pixels);

 

Descripción

Las imágenes SMask llevan un canal DeviceGray independiente de 8 bits cuya luminosidad gobierna el alfa de la imagen en color en el momento de pintar (0 = totalmente transparente, 255 = totalmente opaco). HotPDF emite ambos planos como XObjects de imagen comprimidos con Flate, conecta la entrada /SMask del diccionario de la imagen en color con el XObject de máscara suave, y devuelve un índice XImages que THPDFPage.ShowImage acepta directamente - todo el código de colocación posterior funciona sin cambios.

AddImageWithTransparency y AddImageWithTransparency32 son alias de denominación para el mismo flujo de máscara suave PDF 1.4. Se ofrecen para los puntos de llamada que razonan en términos de imágenes transparentes en vez de la terminología de diccionarios PDF

 

AddImageWithSMask(Width, Height, RGB, Alpha)

- Width / Height: dimensiones en píxeles, idénticas para ambos planos.

- RGB: Width * Height * 3 bytes, fila a fila de arriba abajo, R G B entrelazados por píxel (sin relleno de fila).

- Alpha: Width * Height bytes, fila a fila de arriba abajo, luminosidad de 8 bits por píxel.

 

AddImageWithSMask32(Width, Height, Pixels)

Sobrecarga de conveniencia para entrada RGBA de 32 bits empaquetada. Pixels debe contener Width * Height * 4 bytes en orden R, G, B, A. HotPDF divide el búfer en el plano de color RGB y el plano alfa de 8 bits antes de delegar en AddImageWithSMask

 

Valor de retorno: un índice de XImages idéntico al que devuelve AddImage; páselo a THPDFPage.ShowImage para colocar la imagen en una página. Devuelve -1 cuando StrictVersionLock está activado y la Version activa es inferior a PDF 1.4 (en caso contrario, la versión sube automáticamente a 1.4).

 

Code Example

// Raw-bytes path: build a 64x64 magenta-on-white plane + horizontal
// alpha gradient and place the result on the page
var
  RGB, Alpha: TBytes;
  W, H, X, Y, Idx, ImIdx: Integer;
begin
  W := 64;
  H := 64;
  SetLength(RGB,   W * H * 3);
  SetLength(Alpha, W * H);
  for Y := 0 to H - 1 do
    for X := 0 to W - 1 do
    begin
      Idx := Y * W + X;
      RGB[Idx * 3 + 0] := 255;    // R
      RGB[Idx * 3 + 1] := 0;      // G
      RGB[Idx * 3 + 2] := 255;    // B
      Alpha[Idx]       := Byte((X * 255) div (W - 1));
    end;

  HPDF.Version    := pdf14;       // SMask requires PDF 1.4
  HPDF.Compression := cmFlateDecode;
  HPDF.BeginDoc;
  ImIdx := HPDF.AddImageWithSMask(W, H, RGB, Alpha);
  HPDF.CurrentPage.ShowImage(ImIdx, 80, 80, 256, 256, 0);
  HPDF.EndDoc;
end;

 

Véase también

AddImage, THPDFPage.ShowImage, Version, PDF Filter Support