数据库图片的读取 ( 积分: 100 )

  • 主题发起人 主题发起人 kzx0211
  • 开始时间 开始时间
K

kzx0211

Unregistered / Unconfirmed
GUEST, unregistred user!
公司买了个人事的管理系统,里面的员工基本表字段里有员工图片..
照片导入系统没问题,可是门禁系统里要抓取员工照片,我自己设计一个抓去的,一直出错(jpeg error #53,)
试过内存流,字符流都没效果,不知道什么原因(卖我们系统的那个公司不愿意拿出代码..)
有没人遇到过这个问题,或是给给解决办法的.
 
0x004A5047FFD8FFE000104A46494600010101012C012C0000FFDB00430006040506050406060506070706080A100A0A09090A140E0F0C1017141818171416161A1D251F1A1B231C1616202C20232627292A29191F2D302D283025282928FFDB0043010707070A080A130A0A13281A161A282828282828282828282828282828
以上是数据库内的图片的保存格式,他们的系统导入的图片是JPG的,这个先确认下..
大家有何高见
 
可能读入图片的时候创建OLE对象读入的,因为如果是OLE对象的方式读入的JPG图片,其前面字节有OLE对象的信息,所以你只有照着他的方法,先读到OLE对象,再从读出的数据中读出纯图片数据流。
 
jpeg error #53,)应该是图片格式问题,
你可以用流来读取判断一下

procedure TForm1.BitBtn4Click(Sender: TObject);
var
MyImage:TMemoryStream;
Buffer:Word;
i:integer;
begin
if OpenDialog1.Execute then
begin
MyImage:=TMemoryStream.Create;
MyImage.LoadFromFile(OpenDialog1.FileName);
MyImage.Position := 0;
if MyImage.Size = 0 then
begin
//ERR
ShowMessage('ERR');
MyImage.Free;
Exit;
end;
MyImage.ReadBuffer(Buffer,2);

if Buffer=$4D42 then
begin
//BMP
ShowMessage('BMP');
end
else if Buffer=$D8FF then
begin
//JPEG
ShowMessage('JPEG');
end
else if Buffer=$4947 then
begin
//GIF
ShowMessage('GIF');
end
else if Buffer=$050A then
begin
//PCX
ShowMessage('PCX');
end
else if Buffer=$5089 then
begin
//PNG
ShowMessage('PNG');
end
else if Buffer=$4238 then
begin
//PSD
ShowMessage('PSD');
end
else if Buffer=$A659 then
begin
//RAS
ShowMessage('RAS');
end
else if Buffer=$DA01 then
begin
//SGI
ShowMessage('SGI');
end
else if Buffer=$4949 then
begin
//TIFF
ShowMessage('TIFF');
end
else
begin
//ERR
ShowMessage('ERR');
end;
MyImage.Free;
end;
end;
 
自己接着解决吧~
 

Similar threads

回复
0
查看
848
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部