procedure TFdazx.I1Click(Sender: TObject);
var ImageFileName,ImageFilePath:string;
begin
    OPenpictureDialog1.Filter:=
    'JPEG Image File (*.JPG)|*.JPG|JPEG Image File (*.JPEG)|*.JPEG|Bitmaps (*.BMP)|*.BMP|';
    OpenPictureDialog1.Execute;
    ImageFileName:=OpenPictureDialog1.FileName;      //图片的文件名
    ImageFilePath:=Extractfilepath(ImageFileName);   //图片的路径
    Image1.Picture.LoadFromFile(ImageFilePath);    //用image1显示图片
end;
会有异常出现,为什么?

解决方案 »

  1.   

    不过我还是看到了明显的,问题上面的代码当你打开图片的对话框 按了取消之后,会有问题的。
    procedure TFdazx.I1Click(Sender: TObject);
    var ImageFileName,ImageFilePath:string;
    begin
        OPenpictureDialog1.Filter:=
        'JPEG Image File (*.JPG)|*.JPG|JPEG Image File (*.JPEG)|*.JPEG|Bitmaps (*.BMP)|*.BMP|';
        if OpenPictureDialog1.Execute then
        begin
          //ImageFileName:=OpenPictureDialog1.FileName;      //图片的文件名
          //ImageFilePath:=Extractfilepath(ImageFileName);   //图片的路径
          //Image1.Picture.LoadFromFile(ImageFilePath);    //用image1显示图片 
          Image1.Picture.LoadFromFile(OperPictureDialog1.fileName); //这样写一句就可以了
        end;  
    end;
      

  2.   

    ImageFilePath:=Extractfilepath(ImageFileName);   //图片的路径
    上面这句不要!!!Image1.Picture.LoadFromFile(ImageFileName);    //用image1显示图片
                                .............
      

  3.   

    同意 Drate(小虫([email protected])) ( ) !
      

  4.   

    还是不行,异常提示大体意思是不识别.jpg扩展名文件。
      

  5.   

    USES JPEG
    应该就没问题了
      

  6.   

    这个很简单嘛,
    OPenpictureDialog这个组件它自带过滤功能
    所以只要改成这样就可以了
    procedure TFdazx.I1Click(Sender: TObject);
    var ImageFileName,ImageFilePath:string;
    begin
        if OpenPictureDialog1.Execute then
        begin
          ImageFileName:=OpenPictureDialog1.FileName;      //图片的文件名
          ImageFilePath:=Extractfilepath(ImageFileName);   //图片的路径
          Image1.Picture.LoadFromFile(ImageFilePath);    //用image1显示图片
        end;
    end;
      

  7.   

    在我的记忆中用Image控件是不能支持jpg格式的。只支持bmp格式。
    可以用流来实现。
      

  8.   

    在USE 里面填上  JPEG单元就ok了,
      

  9.   

    这方面可是我的强项喔。
    给个已经调试好的代码给你,希望对你有帮助。////////////////////////////////////////////
    unit FrmMain;interfaceuses//这里要引用Jpeg单元,以便打开jpg图片文件;
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Menus, ExtCtrls, Jpeg;type
      TFormMain = class(TForm)
        MainMenu: TMainMenu;
        N1: TMenuItem;
        NOpenPicture: TMenuItem;
        OpenDlg: TOpenDialog;
        Image: TImage;
        procedure FormCreate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure NOpenPictureClick(Sender: TObject);
      private
        //这是用于打开jpg和bmp文件的变量;
        fJpg:TJpegImage;
        fBmp:TBitmap;
      public
        { Public declarations }
      end;var
      FormMain: TFormMain;implementation{$R *.dfm}//在窗体创建时初始化变量;
    procedure TFormMain.FormCreate(Sender: TObject);
    begin
      fJpg:=TJpegImage.Create;
      fBmp:=TBitmap.Create;
    end;//窗体关闭时释放变量;
    procedure TFormMain.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      fJpg.Free;
      fBmp.Free;
    end;//这是一个菜单项的事件;
    //在该事件中打开图片文件;
    procedure TFormMain.NOpenPictureClick(Sender: TObject);
    begin
      if(OpenDlg.Execute=true)then//用户选择了图片才载入;
      begin
        if(ExtractFileExt(OpenDlg.FileName)='.bmp')then//如果是bmp文件,则用TBitmap打开;
        begin
          fBmp.LoadFromFile(OpenDlg.FileName);
          Image.Picture.Assign(fBmp);
          {
          也可以用以下代码来代替以上两句代码,还更省事,这样连fBmp变量都可以省去了。
          TBitmap的代码只是作为一种方法列举出来而已。
          Image.Picture.LoadFromFile(OpenDlg.FileName);
          }
        end
        else if(ExtractFileExt(OpenDlg.FileName)='.jpg')then//如果是jpg文件,则用TJepeImage打开;
        begin
          fJpg.LoadFromFile(OpenDlg.FileName);
          Image.Picture.Assign(fJpg);
        end;
        //如果还需要打开其他类型的文件,只有添加合适的变量,然后在这里添加打开图片文件的代码就可以了。
      end;
    end;{
    附注:
      1、OpenDlg的过滤器在设计阶段设为:Pictures(*.jpg,*.bmp)|*.jpg;*.bmp|JpgFIles(*.jpg)|*.jpg|BmpFiles(*.bmp)|*.bmp
    }end.