后台是sql server 2000,怎样进行bmp图片的存取,尤其是较大的图片

解决方案 »

  1.   

    procedure TDriverInfoForm.BitBtn1Click(Sender: TObject);
    var
            ImageField:TField;
            Picture:TPicture;
            
    begin
      
    if OpenPicDlg.Execute then
    Begin
            with DataSource.DataSet do
            try
              Query.Edit;
              ImageField := FindField('Pic');
              if ImageField <> nil then
              begin
                Picture := TPicture.Create;
                try
                  Query.Edit;
                  Picture.LoadFromFile(OpenPicDlg.FileName);
                  if Picture.Graphic is TBitmap then
                    ImageField.Assign(Picture)
                  else
                  SaveGraphicToBlobField(Picture.Graphic, ImageField);
                finally
                  Picture.Free;
                  end;
              end;
              
            except
            end;
    End;
    end;procedure SaveGraphicToBlobField(AGraphic: TGraphic; AField: TField);
    var
      BlobStream: TStream;
    begin
      if AField is TBlobField then
        with AField as TBlobField do
        begin
          {$IFNDEF DELPHI3}
          BlobStream := TBlobStream.Create(AField as TBlobField, bmWrite);
          {$ELSE}
          BlobStream := DataSet.CreateBlobStream(AField, bmWrite);
          {$ENDIF}
          try
            AGraphic.SaveToStream(BlobStream);
          finally
            BlobStream.Free;
          end;
        end;
    end;