Del libro de Fedorov y Elmanova sobre ADO, he sacado un código para obtener datos gráficos Blob(ADO) de y pasarlos a un TImage. Según los autores el header de dichos gráficos, tiene exactamente 78 bbytes. Bastaría colocarse en el bite 78 para eludir la cabecera del gráfico y pasar al inicio del dato gráfico "real", desprovisto de datos OLE que se colocan en la cabecera del gráfico.
Se genera un error "Bitmap Image is not valid". igual al que se obtiene al intentar colocar un campo gráfico en un DBImage.
El código se puede llamar con un botón o con un evento AfterScroll, que automatizaría el visionado de gráficos.
Mi conocimiento de las funciones de buffer es muy limitado. ¿Alguien puede decir algo sobre el tema?
Código Delphi
[-]Procedure TForm1.ADOTable1AfterScroll1(DataSet: TDataSet);
var
Bitmap : TBitmap;
BS : TADOBlobStream;
begin
Try
BS:=TADOBlobStream.Create(ADOTable1Grafic1, bmRead);
BS.Skeep(78, soFromBeginning);
Bitmap:=TBitMap.Create; Bitmap:=LoadFromStream(BS);
Image1.Picture.Graphic:= Bitmap;
Finally
Bitmap.Free;
BS.Free;
end;