怎么限制保存图片的大小呢?比如说超过500K的图片就不允许提交。否则数据库太大了,读取也慢。保存图片代码如下,怎么改一下?:
//保存图片
procedure TForm1.btn1Click(Sender: TObject);
begin
  if dlgOpen1.Execute then
    img1.Picture.LoadFromFile(dlgOpen1.FileName);
  qry1.Append;
  qry1.Post;
end;
//提前之前将图片转换为数据流
procedure TForm1.qry1BeforePost(DataSet: TDataSet);
var
  ms: TMemoryStream;
  jpg: TJpegImage;
begin
  ms := TMemoryStream.Create;
  jpg := TJpegImage.Create;
  try
    if img1.Picture.Graphic<>nil then
      begin
        try
          img1.Picture.Graphic.SaveToStream(ms);
        finally
          TBlobField(qry1.FieldByName('pic')).LoadFromStream(ms);
        end;
      end;
  finally
    jpg.Free;
    ms.Free;
  end;
end;

解决方案 »

  1.   

    if ms.Size > 500k then
      弹一个提示框
      

  2.   

    简单点改procedure TForm1.qry1BeforePost(DataSet: TDataSet);
    var
      ms: TMemoryStream;
      jpg: TJpegImage;
    begin
      ms := TMemoryStream.Create;
      jpg := TJpegImage.Create;
      try
        if img1.Picture.Graphic <>nil then
          begin
            try
              img1.Picture.Graphic.SaveToStream(ms);
    //add          
              if ms.size>1024*500 then
              begin
                //do something
              end
              else
                //save to database
    //add
            finally
              TBlobField(qry1.FieldByName('pic')).LoadFromStream(ms);
            end;
          end;
      finally
        jpg.Free;
        ms.Free;
      end;
    end;
      

  3.   

    是通过TMemoryStream的Size来判断大小的。