我想用image动态显示access表中字段image的图像,这个字段用的也是LOB类型,但我的代码怎么运行不了!!代码如下:procedure TForm1.DBEdit1Change(Sender: TObject);var
pic:tmemorystream;
jpg:Tjpegimage;
begin
pic:=tmemorystream.Create;
jpg:=Tjpegimage.Create;
try
with adotable1 do
begin
TBlobField(FieldByName('image')).SaveToStream(pic);
end;
pic.Position:=0;
jpg.LoadFromStream(pic);
Image1.Picture.Bitmap.Assign(jpg);
finally
pic.Free;
jpg.Free;
end;其中有一个错误提示是这样:undeclared identifier:'Tjpegimage' 看了不少资料,人家都是这样定义的,为什么我的就不行?!? 请帮帮我~
pic:tmemorystream;
jpg:Tjpegimage;
begin
pic:=tmemorystream.Create;
jpg:=Tjpegimage.Create;
try
with adotable1 do
begin
TBlobField(FieldByName('image')).SaveToStream(pic);
end;
pic.Position:=0;
jpg.LoadFromStream(pic);
Image1.Picture.Bitmap.Assign(jpg);
finally
pic.Free;
jpg.Free;
end;其中有一个错误提示是这样:undeclared identifier:'Tjpegimage' 看了不少资料,人家都是这样定义的,为什么我的就不行?!? 请帮帮我~
use
JPEG;
不过在运行中又弹出个错误:class EJPEG with message'jpeg error #53 '这又要命了~ 这是个什么错误啊~
pic:tmemorystream;
bmp:TBitMap;
begin
pic:=tmemorystream.Create;
bmp:=TBitMap.Create;
try
with adotable1 do
begin
TBlobField(FieldByName('image')).SaveToStream(pic);
end;
pic.Position:=0;
bmp.LoadFromStream(pic);
Image1.Picture.Bitmap.Assign(bmp);
finally
pic.Free;
bmp.Free;
end;
这个错误,是因为你的文件不是Bmp文件
你判断一下读取的信息的头两个字节,用来判断文件格式
如果是位图的话,这个值应该是$4D42
JPG应该是$D8FF
所以加个判断var
pic: TMemorystream;
Buffer:Word;
begin
pic:=tmemorystream.Create;
TBlobField(adotable1.FieldByName('image')).SaveToStream(pic);
pic.seek(0,sofrombeginning);
pic.read(buffer,2);
if buffer = $4D42 then
//直接显示
else if buffer = $D8FF then
//JPG转换成BMP然后显示
else
//不支持的文件格式
end;