我在ACCESS中利用TBlobStream存取图像,为什么每次读取时如果图片有一点大的话就会出现异常 exception class EJPEG with message 'JPEG error #53' 不知道这是怎么回事,以下是部分源码
sql := 'select fPhoto from tbBase where fCode = ''' + addbasic.Edit1.Text + '''';
query.Close;
query.SQL.Clear;
query.SQL.Add(sql);
query.Open;
//paramstr()获取一个命令行参数
if(query.FieldByName('fPhoto').IsNull = false) then
begin
try FileStream := TFileStream.Create(PCHAR(ExtractFilePath(ParamStr(0)) + 'temp\Display.jpg'),fmCreate);
//建立一个临时文件用于存放图像
BlobStream := TBlobStream.Create(TBlobField(Query.FieldByName('fPhoto')),bmRead);
FileStream.CopyFrom(BlobStream,BlobStream.Size);
FileStream.Free;
BlobStream.Free;
sleep(1000);
addbasic.Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'temp\Display.jpg'); except
// query.First;
// addbasic.Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'temp\Default.jpg');
// query.FieldByName('fPhoto').Assign(addbasic.Image1.Picture.Graphic);
showmessage('图像过大或图片格式有错误!');
exit;
end;
帮帮我
sql := 'select fPhoto from tbBase where fCode = ''' + addbasic.Edit1.Text + '''';
query.Close;
query.SQL.Clear;
query.SQL.Add(sql);
query.Open;
//paramstr()获取一个命令行参数
if(query.FieldByName('fPhoto').IsNull = false) then
begin
try FileStream := TFileStream.Create(PCHAR(ExtractFilePath(ParamStr(0)) + 'temp\Display.jpg'),fmCreate);
//建立一个临时文件用于存放图像
BlobStream := TBlobStream.Create(TBlobField(Query.FieldByName('fPhoto')),bmRead);
FileStream.CopyFrom(BlobStream,BlobStream.Size);
FileStream.Free;
BlobStream.Free;
sleep(1000);
addbasic.Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'temp\Display.jpg'); except
// query.First;
// addbasic.Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'temp\Default.jpg');
// query.FieldByName('fPhoto').Assign(addbasic.Image1.Picture.Graphic);
showmessage('图像过大或图片格式有错误!');
exit;
end;
帮帮我
bmp:=bitmapstream.create(........);
bmp.loadfromstream(BlobStream);
addbasic.Image1.Picture.bitmap:=bmp;
你试试吧,思路是这样的.自己修改一下