THotPDF.AddImageWithSMask-metodi

THotPDF.AddImageWithSMask

THotPDF

Ylös Edellinen Seuraava

Lisää värikuvan XObjectin yhdessä PDF 1.4 -pehmeän maskin kuvan XObjectin (ISO 32000-1 8.9.5.4) kanssa, jotta tuloksena olevassa kuvassa on täysi pikselikohtainen läpinäkyvyys perinteisen /ImageMask-polun binäärisen on/off-rajan sijaan

Delphi syntax:

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

function AddImageWithSMask32(Bitmap32: TBitmap): Integer;

C++ syntax:

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

__property int AddImageWithSMask32(TBitmap* Bitmap32);

Kuvaus

SMask-kuvat sisältävät erillisen 8-bittisen DeviceGray-kanavan, jonka valoisuus ohjaa värikuvan alfa-arvoa piirtovaiheessa (0 = täysin läpinäkyvä, 255 = täysin peittävä). HotPDF tuottaa molemmat tasot Flate-pakattuina image XObject -objekteina, kytkee värikuvasanakirjan /SMask-merkinnän pehmeän maskin XObject-objektiin ja palauttaa XImages-indeksin, jonka metodi THPDFPage.ShowImage hyväksyy suoraan – kaikki myöhempi sijoittelukoodi toimii muuttumattomana

AddImageWithSMask(Width, Height, RGB, Alpha)

- Width / Height: pikselin mitat, identtiset molemmille tasoille

- RGB: Width * Height * 3 tavua, rivijärjestys ylhäältä alas, R G B lomitettu pikseliä kohden (ei rivin täytettä)

- Alpha: Width * Height tavua, rivijärjestys ylhäältä alas, 8-bittinen valoisuus pikseliä kohden

AddImageWithSMask32(Bitmap32)

Kätevä ylikuormitus yleiseen työnkulkuun "minulla on PNG-kuva alphalla". Kohteen TBitmap on oltava PixelFormat = pf32bit; HotPDF lukee BGRA ScanLine -rivit suoraan, järjestää ne uudelleen R G B -väritasoa varten ja kopioi A-tavun alpha-tasolle ennen delegointia raakaan AddImageWithSMask-aloituspisteeseen

Paluuarvo: indeksi taulukkoon XImages, joka on identtinen metodin AddImage palauttaman indeksin kanssa; välitä se metodille THPDFPage.ShowImage kuvan sijoittamiseksi sivulle. Palauttaa arvon -1, kun StrictVersionLock on käytössä ja aktiivinen Version on alle PDF 1.4 (muussa tapauksessa versio korotetaan automaattisesti arvoon 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;

See Also

AddImage, THPDFPage.ShowImage, Version, PDF-suodatintuki