property BitmapCount: Integer; // read only
BitmapCount zwraca liczbę obiektów obrazu na aktualnie aktywnej stronie
(sekcja 8.9 specyfikacji PDF 1.7). Współpracuje z indekserem Bitmap[Index],
który dekoduje bazowy strumień obrazu do w pełni wyrenderowanego Delphi
TBitmap (32-bit RGBA, gotowy do Canvas.Draw, przekazania do
schowka albo zapisania do PNG/BMP)
Wartość wynosi 0, gdy Active ma wartość False,
gdy PageNumber jest nieprawidłowy albo gdy strona nie zawiera obiektów
obrazu. Liczba jest identyczna jak ImageCount; te dwie właściwości różnią się
tylko typem zwracanym przez ich indeksery — Image[Index] zwraca surowy
zdekodowany bufor pikseli w rekordzie TPdfImage, a
Bitmap[Index] opakowuje ten bufor w zarządzany przez wywołującego VCL
TBitmap
Typowa pętla to for I := 0 to Pdf.BitmapCount - 1 do a następnie
Pdf.Bitmap[I]. Każde odwołanie alokuje nowy TBitmap i kopiuje
piksele — nie wywołuj tego w ciasnych pętlach renderujących; buforuj bitmapę przy
ponownym użyciu. Zwolnij każdą zwróconą bitmapę po zakończeniu, aby szybko zwolnić
zasoby GDI
TBitmap przez PDFiumImageCount / Image[Index] pozwala uniknąć narzutu alokacji bitmapy GDIBitmapCount strony nie zależy od poziomu powiększenia, obszaru widoku ani obrotu strony — to strukturalna właściwość strumienia zawartości strony
var I: Integer;
var Bmp: TBitmap;
for I := 0 to Pdf1.BitmapCount - 1 do
begin
Bmp := Pdf1.Bitmap[I];
try
Bmp.SaveToFile(Format('image_%d.bmp', [I]));
finally
Bmp.Free;
end;
end;