从数据库里读取图片并显示

procedure TForm_QTOrder1.ShowPic;
var
  vStr:TADOBlobStream;
  vTmp,vPicType:string;
  vtmpPath:PChar;
begin
  inherited;

  Image1.Picture.Graphic:=nil;  //清空图像控件里的图像
  vstr:=TADOBlobStream.Create(TBlobField(QueryBill4.FieldByName('Pics')),bmRead);  //创建BlobStream,设定Pics字段为Blob字段,并设为只读
  if vstr.Size=0 then  //Stream的大小为0说明没有图像,退出
  begin
    exit;
  end;
  vPicType:=CheckImgType(vStr);    //判断图像类型
  vstr.Position:=0;                                 //指针移动到开头
  GetMem(vtmpPath,MAX_PATH);  //获取临时目录
  GetTempPath(MAX_PATH,vtmpPath);//获取临时目录
  vTmp:=StrPas(vtmpPath);            //获取临时目录
  FreeMem(vtmpPath);  //释放变量
  vTmp:=vTmp+PubData1.GetGUIDString+'.'+vPicType;  //将临时目录和文件名合成全路径文件名
  TBlobField(QueryBill4.FieldByName('Pics')).SaveToFile(vTmp);  //从Blob字段读取图像数据保存到临时文件
  Image1.Picture.LoadFromFile(vTmp);  //图像控件读取临时文件
  DeleteFile(vTmp);  //删除临时文件
  Application.ProcessMessages;
end;

猜你喜欢

转载自blog.csdn.net/victor_yang/article/details/86217703