TurboDB VCL Komponenten Bibliothek TTdbBlobProvider.RegisterBlobFormat Class Method |
Previous Top Next |
Registriert ein Bild Format.
Delphi Syntax:
class procedure RegisterBlobFormat(BitMask, Pattern: Int64; const Tag, Name: string; Format: TTdbBlobFormat; GraphicClass: TGraphicClass);
C++ Syntax:
virtual static void __fastcall RegisterBlobFormat(int64 BitMask, int64 Pattern, System::String Tag, System::String Name, TGraphicClass * GraphicClass);
Parameter
BitMask |
64-Bit Maske um die Muster Bits aus den ersten acht Bytes der Blob-Daten zu extrahieren |
Pattern |
64-Bit Muster um die aus den Blob-Daten extrahierten Bit-Muster zu vergleichen |
Tag |
Kurzname für das Format, z.B. bmp, wav, wmf, gif, png, jpg |
Name |
Langer lesbarer Name für das Format, z.B. Windows Meta File |
Format |
Nummerischer Wert zur Identifikation des Blob-Formats, muss innerhalb der Tabelle eindeutig sein |
GraphicClass |
Klassen Objekt eines TGraphic Abkömmlings, der fähig ist das Format mit ReadData und WriteData zu verarbeiten |
Beschreibung
Standardmäßig kann der Blob-Provider Bitmaps, Windows Meta Files und Wave Dateien extrahieren. Weitere Bildformate wie gif, png, jpeg etc. können durch Registrieren des Formats und einer geeigneten Grafik-Klasse hinzugefügt werden. Beim Laden eines Blobs führt der Blob-Provider eine bitweise And-Operation für die ersten vier Bytes des Blobs mit BitMask durch und Vergleicht das ERgebnis mit Pattern. Bei Übereinstimmung erzeugt er eine Instanz der Grafik-Klasse, verknüpft einen Stream zum Lesen des Blobs damit und ruft die ReadData Methode auf. Die resultierende Grafik wird dann an das Picture-Objekt der Eigenschaft Picture übergeben.
Der Blob-Provider liest die ersten acht Bytes der Blob-Daten als 64 Bit Integer Zahl, daher müssen die Pattern Bytes entgegengesetzt der physikalischen Reihenfolge angegeben werden, der Little-Endian-Konvention geschuldet.
Beispiel
Dieser Code registriert die GIF, JPEG und PNG Formate für den Blob-Provider
ImageBlobProvider.RegisterBlobFormat($ffff, $d8ff, 'JPG', 'JPEG Image', tbfJPG, TJpegImage);
ImageBlobProvider.RegisterBlobFormat($ffffffff, $38464947, 'GIF', 'GIF Image', tbfGIF, TGifImage);
ImageBlobProvider.RegisterBlobFormat($ffffffffffffffff, $0a1a0a0d474e5089, 'PNG', 'PNG Image', tbfPNG, TPngImage);
Siehe auch