用openpicturedialog打开图片前,如何限制所打开的图片大小?

tnt3331023 2013-05-21 08:52:01
procedure TForm1.Button2Click(Sender: TObject);
begin
if openpicturedialog1.Execute then

image1.Picture.LoadFromFile(openpicturedialog1.FileName );

end;


现在通过openpicturedialog1可以打开需要的图片文件,比如jpg等,但想在打开之前再做个限制图片大小的判断
比如 当图片大小>30KB的时候,image不可以获取该图片;
当图片大小<30KB的时候,image可以获取该图片。

该怎么写呢,麻烦大神们给段代码,新手学习下,用GetFileSize ???还是什么别的,图片大小和文件大小的获取方法一样吗?
...全文
278 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
haitao 2013-05-22
  • 打赏
  • 举报
回复
客户端,就有这个好处 浏览器,文件没到服务器,它也不知道文件大小
tnt3331023 2013-05-22
  • 打赏
  • 举报
回复
明白了,是打开占用了,再load就报错了。换成先导入image控件再判断是否保存就KO了,谢谢楼上高手们了,结贴了
tnt3331023 2013-05-22
  • 打赏
  • 举报
回复
按照sololie 的GetFileSize方法,改了下代码
procedure TForm1.Button2Click(Sender: TObject);
var
filehandle:integer;
begin
  if openpicturedialog1.Execute then
  begin
  filehandle:=fileopen(openpicturedialog1.FileName,0);
    try
      if  (getfilesize(filehandle,nil))<30720 then
      begin
     image1.Picture.LoadFromFile(openpicturedialog1.FileName );//这里是不是有问题呀?
      end;
      if  (getfilesize(filehandle,nil))>30720 then
      begin
      showmessage('图片超过30KB,请重新选择!');
      end;
    except
     application.MessageBox('系统错误!','提示',0+64) ;
     button2.SetFocus;
    end;
  end;
end;
其中image1.Picture.LoadFromFile(openpicturedialog1.FileName );是不是我写的不对呀,当小于30KB时,image1没有把那个小于30KB的图片load进来,望高手给改下,或者换条语句?谢谢了
sololie 2013-05-21
  • 打赏
  • 举报
回复
显然你这里说的大小多少K是说文件大小,文件大小就是文件占据多的byte数。
sololie 2013-05-21
  • 打赏
  • 举报
回复

Delphi自身提供了FileSize函数,例如:

    var

     f: file of Byte;

     size : Longint;

    begin

     AssignFile(f, 'f:\t.exe');

     Reset(f);

     size := FileSize(f);

     edit1.text := IntToStr(size);

     CloseFile(f);

    end; 

这一种如果判断的文件被其它程序使用,则会报错 I/O Error

     下面这种方法相对更好一些

    也可以使用下面的方法:

    function GetFileSize(const FileName: String): LongInt;

    var SearchRec: TSearchRec;

    begin

    if FindFirst(ExpandFileName(FileName), faAnyFile, SearchRec) = 0 then

     Result := SearchRec.Size

    else

     Result := -1;

    end

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧