看了很多的帖子,还是不能显示存储在Access中,类型为OLE 对象的bmp图像显示成功郁闷!
我的测试:
1)图片保存,此功能成功保存,代码如下:procedure TfrmCar.btnLoadPicClick(Sender: TObject);
begin
If OpenPictureDialog1.Execute then
begin
Table1.Edit;
TBlobField(Table1.FieldByName('Pic')).LoadFromFile(OpenPictureDialog1.FileName);
Table1.Post;
end;
end;2)查看图片,此功能失败,提示错误:
Project DTW.exe raised exception class EJPEG with message 'JPEG error #53'. Process stopped. Use Step or Run to continue.
,代码如下:
procedure TfrmCarQry.Button1Click(Sender: TObject);
var
tempstream:TStringStream;
tempjpeg:TJPEGImage;
begin
try
tempstream:=TStringStream.Create('');
TBlobField(Query1.FieldByName('pic')).SaveToStream(tempstream);
tempstream.Position:=0;
tempjpeg:=TJPEGImage.Create;
tempjpeg.LoadFromStream(tempstream);
DBImage1.Picture.Bitmap.Assign(tempjpeg);
//或者使用也是失败
//Image1.Picture.Bitmap.Assign(tempjpeg);
finally
tempstream.Free;
tempjpeg.Free;
end;
end;使用这个也是同样的错误:
var
MyJPEG : TJPEGImage;
MS: TMemoryStream;
begin
MS:=TMemoryStream.Create;
MyJPEG:=TJPEGImage.Create;
Query1.Open;
query1.First;
try
TBlobField(Query1.FieldByName('pic')).SaveToStream(MS);
MS.Position:=0;
MyJPEG.LoadFromStream(MS);
dbImage1.Picture.Bitmap.Assign(MyJPEG);
finally
MS.Free;
MyJPEG.Free;
end;
end;
请各位大侠多多指点,谢谢!!
再有使用dbimage 和image控件,有什么需要设置的属性么?
我的测试:
1)图片保存,此功能成功保存,代码如下:procedure TfrmCar.btnLoadPicClick(Sender: TObject);
begin
If OpenPictureDialog1.Execute then
begin
Table1.Edit;
TBlobField(Table1.FieldByName('Pic')).LoadFromFile(OpenPictureDialog1.FileName);
Table1.Post;
end;
end;2)查看图片,此功能失败,提示错误:
Project DTW.exe raised exception class EJPEG with message 'JPEG error #53'. Process stopped. Use Step or Run to continue.
,代码如下:
procedure TfrmCarQry.Button1Click(Sender: TObject);
var
tempstream:TStringStream;
tempjpeg:TJPEGImage;
begin
try
tempstream:=TStringStream.Create('');
TBlobField(Query1.FieldByName('pic')).SaveToStream(tempstream);
tempstream.Position:=0;
tempjpeg:=TJPEGImage.Create;
tempjpeg.LoadFromStream(tempstream);
DBImage1.Picture.Bitmap.Assign(tempjpeg);
//或者使用也是失败
//Image1.Picture.Bitmap.Assign(tempjpeg);
finally
tempstream.Free;
tempjpeg.Free;
end;
end;使用这个也是同样的错误:
var
MyJPEG : TJPEGImage;
MS: TMemoryStream;
begin
MS:=TMemoryStream.Create;
MyJPEG:=TJPEGImage.Create;
Query1.Open;
query1.First;
try
TBlobField(Query1.FieldByName('pic')).SaveToStream(MS);
MS.Position:=0;
MyJPEG.LoadFromStream(MS);
dbImage1.Picture.Bitmap.Assign(MyJPEG);
finally
MS.Free;
MyJPEG.Free;
end;
end;
请各位大侠多多指点,谢谢!!
再有使用dbimage 和image控件,有什么需要设置的属性么?
http://community.csdn.net/Expert/TopicView.asp?id=4615955
先把为什么不用Tbitmap??还有不应该用DB的控件,用Timage就可以了,
如果是bmp,你把第2种方法的TJPEGImage换成TBitmap看看
table1.active:=true;
table1img.SaveToFile('12345.bmp');
table1.active:=false;
image1.picture.loadfromfile('12345.bmp');table1img为双击table1控件增加的字段。