当前位置:编程学习 > Delphi >>

Delphi中如何显示SQL图片到图片框里?

追问:不对!你的代码我用了会出错!
答案:

转换成流,

先定义流

Var

  mStream:TMemoryStream;

  Jpg:=TjpegImage;//定义个jpegImage对象

接着创建流

mStream:=TMemoryStream.Create  ;

Jpg:=TjpegImage.Create  ; //创建jpegImage对象

将图片字段的内容保存到流里面

TBlobField(ADOQuery1.FieldByName('img(图片字段)')).SaveToStream(mStream(流));

jpg.LoadFromStream(Stream);//用jpegImage对象加载流

最后加载图片

image1.Picture.Assign(Jpg);

 

uses jpeg,classes,DB;

var
  pic:Tjpegimage;
  jpegStream:TMemoryStream;


jpegStream:=TMemoryStream.Create;
      if TBlobField(ADOQuery1.fieldbyname('picture')).BlobSize >0 then
      begin
        (ADOQuery1.fieldbyname('picture') as TBlobField).SaveToStream(JpegStream);
        JpegStream.Position:=0;
        try
          TempImage.Picture.Graphic := nil;
          TempImage.Picture.Graphic:=TJpegImage.Create;
          TempImage.Picture.Graphic.LoadFromStream(JpegStream);  //读Jpeg
        except
          TempImage.Picture.Bitmap.LoadFromStream(JpegStream);   //读Bmp
        end;
      end;
      jpegStream.Free;
上面这句是我现在用的,可以读取jpeg和BMP图片
此外,你说的读不出来,可能是你保存错了,下面附带保存代码:

var
  pic:Tjpegimage;
  jpegStream:TMemoryStream;


jpegStream:=TMemoryStream.Create;
      if cxImage1.Picture.Graphic <> nil then
      begin
         cxImage1.Picture.Graphic.SaveToStream(JpegStream);
         JpegStream.Position:=0;
         Edit;
         (ADOQuery1.fieldbyname('picture') as TBlobField).LoadFromStream(JpegStream);
        Post;
      end;
      jpegStream.Free;

上一个:Delphi和pascal在语言上有区别吗?
下一个:Delphi 里这么写可以吗?为什么不能实现?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,