procedure TForm1.FormCreate(Sender: TObject);
var
i : integer;
b : TStream;
m : TMemoryStream;
bmp : TBitmap;
begin
btnRunReport.Enabled := False;
Table1.Active := True;
dbimage1.Picture.SaveToFile('d:\temp\DbImage.bmp');
//DbImage.bmp可以打开
TGraphicField(table1.FieldByName('graphic')).SaveToFile('d:\temp\DbGraphic.bmp');
TBlobField(table1.FieldByName('graphic')).SaveToFile('d:\temp\DbBlob.bmp');
//DbGraphic.bmp和DbBlob.bmp用画图程序打不开,用ACDSEE打开后没有图像
b := TStream.Create;
b := table1.CreateBlobStream(table1.FieldByName('graphic'), bmread);
m := TMemoryStream.Create;
m.LoadFromStream(b);
m.SaveToFile('d:\temp\MemoryImage.bmp');
//MemoryImages.bmp用画图程序打不开,用ACDSEE打开后没有图像
bmp := TBitmap.Create;
bmp.LoadFromStream(b);
bmp.SaveToFile('d:\temp\BitmapImage.bmp');
//BitmapImage.bmp用画图程序打不开,用ACDSEE打开后没有图像
image1.Picture.Graphic.LoadFromStream(b);
//image1没有图像显示
image1.Picture.Bitmap.LoadFromStream(b);
//image1没有图像显示
end;我用UltraEdit比较那些打不开的文件,发现它们的二进制格式相同,但是同能打开的用DbImage控件导出的DbImage.bmp比较,却有很多地方不一样。这种问题谁能帮我解决?
i : integer;
b : TStream;
m : TMemoryStream;
bmp : TBitmap;
begin
btnRunReport.Enabled := False;
Table1.Active := True;
dbimage1.Picture.SaveToFile('d:\temp\DbImage.bmp');
//DbImage.bmp可以打开
TGraphicField(table1.FieldByName('BMP')).SaveToFile('d:\temp\DbGraphic.bmp');
TBlobField(table1.FieldByName('BMP')).SaveToFile('d:\temp\DbBlob.bmp');
//DbGraphic.bmp和DbBlob.bmp用画图程序打不开,用ACDSEE打开后没有图像
b := TStream.Create;
b := table1.CreateBlobStream(table1.FieldByName('BMP'), bmread);
m := TMemoryStream.Create;
m.LoadFromStream(b);
m.SaveToFile('d:\temp\MemoryImage.bmp');
//MemoryImages.bmp用画图程序打不开,用ACDSEE打开后没有图像
bmp := TBitmap.Create;
bmp.LoadFromStream(b);
bmp.SaveToFile('d:\temp\BitmapImage.bmp');
//BitmapImage.bmp用画图程序打不开,用ACDSEE打开后没有图像
b.Position:=8; --增加
//image1.Picture.Graphic.LoadFromStream(b);
//image1没有图像显示
image1.Picture.Bitmap.LoadFromStream(b);
//image1没有图像显示
end;这是我对Delphi自带的DBDEMOS数据库的animals表的BMP的数据操作,DbGraphic.bmp和DbBlob.bmp比
DbImage.bmp多了八个字节,在Acdsee当然不能显示,这八个字节可能是DBImage的格式信息,你的表的
graphic字段估计也是类似的原因(BMP文件是以字母BM开头的文件)
b.Position:=8;
tmpStream.LoadFromStream(b);
tmpStream.SaveToFile('c:\aaa.bmp');这样就可以了