THotPDF.AddImageWithSMask Methode

 

THotPDF.AddImageWithSMask

THotPDF

 

Top  Vorige  Volgende

Voegt een kleuren-image-XObject toe samen met een soft-mask-image-XObject volgens PDF 1.4 (ISO 32000-1 8.9.5.4), zodat het resulterende beeld volledige per-pixel-transparantie heeft in plaats van de binaire aan/uit-beperking van het legacy /ImageMask-pad.

 

Delphi-syntax:

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;

 

C++-syntax:

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

 

Description

SMask-afbeeldingen dragen een onafhankelijk 8-bit DeviceGray-kanaal waarvan de luminositeit bij het schilderen de alpha van de kleurenafbeelding stuurt (0 = volledig transparant, 255 = volledig dekkend). HotPDF geeft beide vlakken uit als Flate-gecomprimeerde image-XObjects, verbindt de /SMask-regel van het kleurenafbeeldingswoordenboek met het soft-mask-XObject en geeft een XImages-index terug die THPDFPage.ShowImage direct accepteert - alle daaropvolgende plaatsingscode werkt ongewijzigd.

AddImageWithTransparency en AddImageWithTransparency32 zijn naamaliassen voor dezelfde soft-mask-workflow volgens PDF 1.4. Ze zijn er voor aanroepplekken die in termen van transparante afbeeldingen denken in plaats van PDF-woordenboekterminologie

 

AddImageWithSMask(Width, Height, RGB, Alpha)

- Width / Height: pixelformaten, identiek voor beide vlakken.

- RGB: Width * Height * 3 bytes, row-major top-down, R G B interleaved per pixel (no row padding).

- Alpha: Width * Height bytes, row-major top-down, 8-bit luminosity per pixel.

 

AddImageWithSMask32(Width, Height, Pixels)

Gemaksoverload voor verpakte 32-bit RGBA-invoer. Pixels moet Width * Height * 4 bytes bevatten in de volgorde R, G, B, A. HotPDF splitst de buffer in het RGB-kleurvlak en het 8-bit alpha-vlak voordat wordt doorgestuurd naar AddImageWithSMask

 

Retourwaarde: een index in XImages, identiek aan degene die AddImage teruggeeft; geef die door aan THPDFPage.ShowImage om het beeld op een pagina te plaatsen. Geeft -1 terug wanneer StrictVersionLock aan staat en de actieve Version onder PDF 1.4 zit (anders wordt de versie automatisch verhoogd naar 1.4).

 

Codevoorbeeld

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

 

Zie ook

AddImage, THPDFPage.ShowImage, Version, PDF-filterondersteuning