THotPDF.AddImageWithSMask Method

 

THotPDF.AddImageWithSMask

THotPDF

 

Üst  Önceki  Sonraki

Renkli bir görüntü XObject'ini, PDF 1.4 yumuşak maske görüntü XObject'iyle (ISO 32000-1 8.9.5.4) birlikte ekler; böylece oluşan resim, eski /ImageMask yolunun ikili açık/kapalı sınırı yerine piksel başına tam saydamlık taşır.

 

Delphi sözdizimi:

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++ sözdizimi:

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

 

Açıklama

SMask görüntüleri, parlaklığı çizim sırasında renkli görüntünün alfa kanalını süren bağımsız bir 8 bitlik DeviceGray kanalı taşır (0 = tamamen saydam, 255 = tamamen opak). HotPDF her iki düzlemi de Flate ile sıkıştırılmış görüntü XObject'leri olarak yazar, renkli görüntü sözlüğünün /SMask girdisini yumuşak maske XObject'ine bağlar ve THPDFPage.ShowImage'ın doğrudan kabul ettiği bir XImages indeksi döndürür — sonrasındaki tüm yerleştirme kodu değişmeden çalışır.

AddImageWithTransparency ve AddImageWithTransparency32, aynı PDF 1.4 yumuşak maske iş akışı için adlandırma takma adlarıdır. PDF sözlüğü terminolojisi yerine saydam görüntüler üzerinden düşünen çağrı noktaları için sağlanırlar

 

AddImageWithSMask(Width, Height, RGB, Alpha)

- Width / Height: piksel boyutları; her iki düzlem için de aynıdır.

- RGB: Width * Height * 3 bayt; satır öncelikli, yukarıdan aşağıya, piksel başına R G B serpiştirilmiş (satır dolgusu yok).

- Alpha: Width * Height bayt; satır öncelikli, yukarıdan aşağıya, piksel başına 8 bitlik parlaklık.

 

AddImageWithSMask32(Width, Height, Pixels)

Paketlenmiş 32 bitlik RGBA girdisi için kullanışlı aşırı yükleme. Pixels, R, G, B, A sırasında Width * Height * 4 bayt içermelidir. HotPDF tamponu, AddImageWithSMask'e devretmeden önce RGB renk düzlemi ile 8 bitlik alfa düzlemine ayırır

 

Dönüş değeri: AddImage'in döndürdüğüyle aynı, XImages içine bir indeks; resmi bir sayfaya yerleştirmek için THPDFPage.ShowImage'e geçirin. StrictVersionLock açıkken ve etkin Version PDF 1.4'ün altındayken -1 döndürür (aksi hâlde sürüm otomatik olarak 1.4'e yükselir).

 

Kod Örneği

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

 

Ayrıca bakın

AddImage, THPDFPage.ShowImage, Version, PDF filtre desteği