• dephi中显示图片


    我們知道BLOB在数据库的表中实际上是以二进制数据的形式存放的。由于BLOB的特殊性,一般的程序都无法处理它。比如,如果在一张表中存在BLOB,当用數據顯示控件打开它时,BLOB列将只显示BLOB字样。至于该列中实际存的是什么数据是一般的數據顯示控件无法知到的。如果在我们编制的程序中,用DBGrid控件打开一个有BLOB字段的表,效果也一样。我们的程序无法直接显示、编辑以及插入BLOB字段。可见,常规的方法是不能满足要求的。
            既然我們知道數據以二進制形式存放,那麼就可以通过内存流来完成。使用内存流,可减少磁盘操作,從而大大提高运行效率。程序的實現代碼如下(以Delphi為例進行說明):


    procedure TForm3.btn1Click(Sender: TObject);  //插入圖片過程
    var
      tStream:TMemoryStream;
    begin
      try
        tStream := TMemoryStream.Create;                                 //創建內存流
        img1.Picture.Graphic.SaveToStream(tStream);  //將圖片保存至內存流中
        qry1.Close;
        qry1.SQL.Clear;
        qry1.SQL.Add('Insert into photo (id,photo) values (:id,:photo)'); //進行插入操作
        qry1.Parameters.ParamByName('id').Value := '003';
        qry1.Parameters.ParamByName('photo').LoadFromStream(tStream,ftBlob);  //讀取保存的內存圖
        qry1.ExecSQL;
      finally
        tStream.Free;                                                                     //釋放內存流
      end;
      end;

    procedure TForm3.btn2Click(Sender: TObject);     //讀取圖片過程
    var
      tStream:TMemoryStream;
      Jpg:TjpegImage;
    begin
    qry1.Close;
    qry1.SQL.Text:='select (photo) from photo';
    qry1.Open;
      if not qry1.FieldByName('photo').IsNull then
      begin
        tStream:=TMemoryStream.Create ;
        Jpg:=TjpegImage.Create ;
        TBlobField(qry1.FieldByName('photo')).SaveToStream(tStream);  //顯示的轉換為BlobFiled並保存至內存流
        tStream.Position :=0;
        jpg.LoadFromStream(tStream);
        img2.Picture.Assign(Jpg);
    end
    else
    begin
       img2.Picture :=nil;
    end;
    end;

  • 相关阅读:
    hdu 4183(网络流)
    hdu 1565&hdu 1569(网络流--最小点权值覆盖)
    hdu 1532(最大流)
    HDU 2141 Can you find it?
    HDU 1096 A+B for Input-Output Practice (VIII)
    HDU 1095 A+B for Input-Output Practice (VII)
    HDU 1094 A+B for Input-Output Practice (VI)
    HDU 1093 A+B for Input-Output Practice (V)
    HDU 1092 A+B for Input-Output Practice (IV)
    HDU 1091 A+B for Input-Output Practice (III)
  • 原文地址:https://www.cnblogs.com/hanhan/p/2427286.html
Copyright © 2020-2023  润新知