THotPDF.AddImageWithSMask Method-metode

 

THotPDF.AddImageWithSMask

THotPDF

 

Øverst  Forrige  Næste
Placeholder for topic body

Tilføjer et farvebillede-XObject sammen med et PDF 1.4 soft-mask billede-XObject (ISO 32000-1 8.9.5.4), så det resulterende billede bærer fuld gennemsigtighed pr. pixel i stedet for den binære til/fra grænse for den ældre/ImageMask path

 

Delphi-syntaks:

function AddImageWithSMask(Width, Height: Integer; RGB: TBytes; Alpha: TBytes): Integer;constRGB: TBytes;constAlpha: TBytes): Integer;

function AddImageWithSMask32(Bitmap32: TBitmap): Integer;

 

C++ syntaks:

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

__property int AddImageWithSMask32(TBitmap* Bitmap32);

 

Beskrivelse

SMask-billeder bærer en uafhængig 8-bit DeviceGray kanal, hvis lysstyrke styrer alfaen af farvebilledet på tegnetidspunktet (0 = helt gennemsigtig, 255 = helt uigennemsigtig). HotPDF udsender begge planer som Flate-komprimerede billede-XObjects, forbinder farvebilledordbogens/SMaskindgang ved soft-mask XObject og returnerer etXImagesindeks, somTHPDFPage.ShowImageaccepterer direkte - al efterfølgende placeringskode fungerer uændret

 

AddImageWithSMask(Width, Height, RGB, Alpha)

- Width / Height: pixeldimensioner, identiske for begge planer

- RGB: Width * Height * 3bytes, række-major øverst-fra-nederst, R G B flettet pr. pixel (ingen rækkeudfyldning)

- Alpha: Width * Heightbytes, række-major øverst-fra-nederst, 8-bit lysstyrke pr. pixel

 

AddImageWithSMask32(Bitmap32)

Praktisk overload til den almindelige "Jeg har en PNG med alpha" arbejdsgang. DenTBitmapskal havePixelFormat = pf32bit; HotPDF læser BGRA ScanLine-rækkerne direkte, omarrangerer til R G B for farveplanet og kopierer A-byten til alpha-planet, før der delegeres til det råAddImageWithSMaskindgangspunkt

 

Returværdi: et indeks iXImagesidentisk med det, somAddImagereturnerer; overfør det tilTHPDFPage.ShowImagefor at placere billedet på en side. Returnerer-1 when StrictVersionLocker slået til, og den aktiveVersioner under PDF 1.4 (ellers bumpes versionen automatisk til 1.4)

 

Kodeeksempel

// 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;

 

Se også

AddImage, THPDFPage.ShowImage, Version, PDF Filter Support