Delphi将图片保存至Sql Server中的小问题?
怎么限制保存图片的大小呢?比如说超过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;
[解决办法]
if ms.Size > 500k then
弹一个提示框
[解决办法]
简单点改
- Delphi(Pascal) code
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;