|
Delphi 中实现JPG和BMP图像的数据库存取
1、在数据库中包括Blob类别的数据库字段,例如 photo
2、保存时,通过 OpenDialog 找到某文件,Jpg 或者 Bmp 皆可
3、借助一个 Image 用于显示该图片
4、保存时,先显示该图片,然后保存到数据库,一定要用 Graphic
image1.Picture.LoadFromFile(OpenDialog1.FileName); ADODataSet1.FindField('photo').Assign(image1.Picture.Graphic)
5、为了在浏览数据库时能更新 image 的图像,也就是显示,先判断有无记录,记录中的图像有无信息,再从图像字段数据流中取出前2字节,以此判断图像是 jpg 还是 bmp,再分别显示
先定义一个取文件头n字节的函数
GetFileFlag(filestring:string;len:integer):string;//获取文件标识符 前 len 字节的十六进制 var ch:char; i:integer; s:string; begin s:=''; for i:=1 to len do begin ch:=filestring[i]; s:=s+inttohex(ord(ch),2); end; GetFileFlag:=s; end;
再在程序中显示图像字段的图像
if ADODataSet1.RecNo>0 then if ADODataSet1.FieldByName('StylePhoto').AsString<>'' then begin fileflag:=GetFileFlag(ADODataSet1.FieldByName('StylePhoto').AsString,2); if fileflag='FFD8' then //Jpeg begin jpg:=TJpegImage.Create; try jpg.Assign(ADODataSet1.FieldByName('StylePhoto')); image1.Picture.Graphic:=jpg; finally jpg.free; end; end else if fileflag='424D' then// BMP begin image1.Picture.Assign(ADODataSet1.FieldByName('StylePhoto')); end; end else image1.Picture.assign(nil);
(阅读次数:
)
|