property BitmapCount: Integer; // read only
BitmapCount zwraca liczbę obrazowych obiektów strony na aktualnie aktywnej stronie
(sekcja 8.9 specyfikacji PDF 1.7). Działa w parze z indeksatorem Bitmap[Index],
który dekoduje leżący pod spodem strumień obrazu do w pełni wyrenderowanej Delphi
TBitmap (32-bit RGBA, gotowej do Canvas.Draw, transferu do schowka
albo zapisu do PNG/BMP)
Wartość wynosi 0, gdy Active jest False, gdy
PageNumber jest niepoprawny albo gdy strona nie zawiera obiektów obrazów. Liczba
jest identyczna z ImageCount; obie właściwości różnią się wyłącznie typem
zwracanym przez swoje indeksatory — Image[Index] oddaje rekord
TPdfImage, którego Data trzyma zdekodowany bufor pikseli, a
RawData przenosi nadal zakodowany strumień obrazu, natomiast
Bitmap[Index] opakowuje ten bufor w zarządzaną VCL TBitmap
należącą do wywołującego
Typowa pętla to for I := 0 to Pdf.BitmapCount - 1 do, po której następuje
Pdf.Bitmap[I]. Każde odwołanie alokuje nową TBitmap i kopiuje
piksele — nie wywołuj jej w ciasnych pętlach renderujących; przy ponownym użyciu
zapisz bitmapę w pamięci podręcznej. Każdą zwróconą bitmapę zwolnij po skończeniu pracy,
aby niezwłocznie odzyskać zasoby GDI
TBitmapImageCount / Image[Index] omija narzut alokacji
bitmapy GDI
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;