我得到一个access表,其中有一个image字段,类型为:OLE 对象,内容显示为长二进制数据,怎样把图片读到image中,试了好多办法都不行,
var
FileN:TFileStream;
myblogstram : TStream;
FindName,SaveFName:string;
B: TBitmap;
jp: TJpegImage;
begin
B := TBitmap.Create;
jp := TJpegImage.Create;
//FileN:=TFileStream.create('c:\tt.bmp',fmCreate);
if adoquery1.RecordCount>0 then
begin
myblogstram :=Adoquery1.CreateBlobStream(Adoquery1.FieldByName('image'), bmRead);
b.LoadFromStream(myblogstram);
//jp.LoadFromStream(myblogstram);
//FileN.CopyFrom(myblogstram,0);
myblogstram.Free;
end;
//Freeandnil(FileN);
end;
提示:bitmap image is not valid;
var
FileN:TFileStream;
myblogstram : TStream;
FindName,SaveFName:string;
B: TBitmap;
jp: TJpegImage;
begin
B := TBitmap.Create;
jp := TJpegImage.Create;
//FileN:=TFileStream.create('c:\tt.bmp',fmCreate);
if adoquery1.RecordCount>0 then
begin
myblogstram :=Adoquery1.CreateBlobStream(Adoquery1.FieldByName('image'), bmRead);
b.LoadFromStream(myblogstram);
//jp.LoadFromStream(myblogstram);
//FileN.CopyFrom(myblogstram,0);
myblogstram.Free;
end;
//Freeandnil(FileN);
end;
提示:bitmap image is not valid;
var
MS: TStream;
begin
with Table1 do
MS:=CreateBlobStream
(FieldbyName('image'),bmRead);
Image1.Picture.Graphic.
LoadFromStream(MS);
MS.Free;
end;
var
myjpeg: Tjpegimage;
ms: tmemorystream;
procedure Tform1.Button1Click(Sender: TObject);
begin
myjpeg := Tjpegimage.Create;
try
with myjpeg do
begin
Assign(form1.Image1.Picture.Graphic);
ms := Tmemorystream.Create;
savetostream(ms);
ms.Position := 0;
TBlobField(FieldByName('image')).LoadFromStream(ms);
end;
finally
myjpeg.Free;
end;
end;