Извлечение изображения из BLOB-поля
|
- Почему программеры, сисопы и прочий компьютерный люд, всё время пьют пиво или ещё чего покрепче?
- А вы пробовали смотреть на работу чайника за компьютером на трезвую голову?
|
Извлечение изображения из BLOB-поля таблицы dBASE или Paradox -- без первой
записи изображения в файл -- простейший процесс использования метода Assign для
сохранения содержимого BLOB-поля в объекте, имеющим тип TBitmap. Отдельный
объект TBitmap или свойство Bitmap объекта Picture, в свою очередь являющегося
свойством компонента TIMage, могут служить примером совместимой цели для данной
операции.
Вот пример кода, демонстрирующего использование метода Assign для копирования
изображения из BLOB-поля в компонент TImage.
procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Picture.Bitmap.Assign(Table1Bitmap);
end;
|
В данном примере, объект Table1Bitmap типа TBLOBField - BLOB-поле таблицы
dBASE. Данный TBLOBField-объекты был создан с помощью редактора полей (Fields
Editor). Если редактор полей для создания TFields для полей таблицы не
используется, получить доступ к полям можно с помощью метода FieldByName или
свойства Fields, оба они являются членами компонентов TTable или TQuery. В
случае ссылки на BLOB-поле таблицы с помощью одного из приведенных членов, перед
использованием метода Assign указатель на поле должен быть прежде приведен к
типу объекта TBLOBField. Для примера:
procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Picture.Bitmap.Assign(TBLOBField(Table1.Fields[1]));
end;
|
Изображение, хранящееся в BLOB-поле, может быть скопировано непосредственно в
отдельный TBitmap объект. Ниже приведен пример, демонстрирующий создание объекта
TBitmap и сохранения в нем изображения из BLOB-поля.
procedure TForm1.Button2Click(Sender: TObject);
var
B: TBitmap;
begin
B := TBitmap.Create;
try
B.Assign(Table1Bitmap);
Image1.Picture.Bitmap.Assign(B);
finally
B.Free;
end;
end;
|
|