这是因为2.Jpg的这个文件已经损坏,不符合Jpeg的格式。
请用其他软件看图,是否正确。

解决方案 »

  1.   

    直接这样做不就可以了TBolbField(table1.FieldByName('pic')).LoadFromFile('c:\2.jpg');
      

  2.   

    有可能是你的CPU超频了。试试把它调回来怎样。我以前也碰到过这样的现像。
      

  3.   

    jpeg存入数据库的时候不能用loadfromfile 
    必须用数据流录入
    procedure TFORM1.SpeedButton2Click(Sender: TObject);  //按钮专门录入图片
    Var MyJpg:TjpegImage;
        MyMs :TMemoryStream;
        MyFs :TFileStream;
        MyBmp:TBitmap;
        S:String;
    begin
        MyJpg:=TJpegImage.Create;
        MyMs:=TMemoryStream.Create;
        If OpenPictureDialog1.Execute Then
        Begin
              S:=OpenPictureDialog1.FileName;
              S:=ExtractFileExt(S);
              S:=AnsiUpperCase(S);
              If S='.BMP' Then
              Begin  //把 BMP 图转换为 JPG 图
                  MyBmp:=TBitmap.Create;
                  MyFs :=TFileStream.Create(OpenPictureDialog1.FileName,fmOpenRead);
                  MyFs.Seek(soFromBeginning,0);
                  MyBmp.LoadFromStream(MyFs);
                  MyJpg.Assign(MyBmp);
                  MyJpg.Compress;
                  MyBmp.Free;
                  MyFs.Free;
              End
              Else
              Begin
                  MyJpg.LoadFromFile(OpenPictureDialog1.FileName);
              End;          MyJpg.SaveToStream(MyMs);
              MyMs.Seek(0,0);          TABLE1.Edit;              //存入数据表的PHOTO字段
              TABLE1photo.LoadFromStream(MyMs);
              TABLE1.Post;
        End;
        MyJpg.free;
        MyMs.Free;
    end;//打开图片
    procedure TFORM1.DATASOUSE1DataChange(Sender: TObject; Field: TField);
    Var MyMs  : TMemoryStream;
        Myjpg : TJpegImage;
    begin
        MyMs:=TMemoryStream.Create;
        Myjpg:=Tjpegimage.Create;
        If Not TABLE1photo.isNull Then
        Begin
              TABLE1photo.SaveToStream(MyMs);
              MyMs.Seek(0,0);
              Myjpg.LoadFromStream(MyMs);
              Image1.Picture.Assign(Myjpg);  //使用IMAGE而不是DBIMAGE
        End
        Else
        Begin
              Image1.Picture.Assign(Nil);
        End;
        MyMs.Free;
        Myjpg.Free;
    end;
    //上面这些是以前回答问题的答案
      

  4.   

    为什么不能用LoadFromFile,给个理由。
    我以前一直这么用的,没人说我程序不对。
      

  5.   

    Musicwind();-) :文件没有损坏,用ACDSEE可以看.
      

  6.   

    tong_jin(YG) :还是不行.我该怎么办.
      

  7.   

    LoadFromFile只能用于bmp文件 ,如果是jpg文件 程序汇报错的用上面的代码应该可以的啊? 如果不行,是存不进去,还是什么?
      

  8.   

    多谢指点。如果uses Jpeg;那么会不会报错?
      

  9.   

    本人使用的是DELPHI5.0和ACCESS2000,操作系统WIN2000.我将DELPHI重新安装,还是不行.救救我吧!
      

  10.   

    我刚才试过了,用TGraphicField可以直接LoadFromFile,我在试试TBlobField。
      

  11.   

    TBlobField也可以就是
    TBolbField(table1.FieldByName('pic')).LoadFromFile('c:\2.jpg'); 
    不过一开始需要uses一下jpeg.
      

  12.   

    to chechy(chechy):
            为什么不能用LoadFromFile,给个理由。我以前一直这么用的,没人说我程序不对。  
    ===============================================================
    TJPEGImage.LoadFromStream()可以装.jpg,但TJPEGImage.LoadFromFile()不能装.jpg,
    但可以装.bmp,原因是:  LoadFromFile()方法属于上一级TGraphics,不属于
    TJPEGImage,下面的邦助标题就可以看出.就是说TJPEGIMage并没有对LoadFromFile进行改
    造或派生,所以不能装.jpg.下面是邦助中的'方法'标题.In TJPEGImage
                      Assign
    Compress
    Create
    Destroy
    DIBNeeded
    JPEGNeeded
    LoadFromClipboardFormat
    LoadFromStream                // 派生了,可以装.jpg
    SaveToClipboardFormat
    SaveToStream
    Derived from TGraphic
                      LoadFromFile     // 没有被派生(Derive)
    SaveToFile
      

  13.   

    但是事实上,我刚才用TBlobField和TGraphicField的LoadFromFile成功的装入了JPEG文件。
    这怎么解释呢?难道我这里的环境特殊?
      

  14.   

    这更不奇怪!
    TBlobField是存放大块数据用的,什么格式的东西都可放进去,.jpg当然也可以和LoadFromFile了,与TJPEGIMage没有联系;
    TGraphicsField是从TBlobField派生的,TBlobField可以LoadFromFile('.jpg'),TGraphicsField也就可以
      

  15.   

    那么装进去不就行了吗?我只是觉得TBlobField.LoadFromFile为什么不能使用?因为以前自己一直都在这么用。
    至于显示,呵呵我也是用stream的。从Field中的Stream导出,这总比SaveToFile,在LoadFromFile要快。
      

  16.   

    TJPEGIMage.LoadFromFile('test.jpg');肯定不行!TBlobField.LoadFromFile('test.jpg') 难道也不能用?!这两种情况不一样
      

  17.   

    前面的tong_jin(YG)不是说不行吗?我以为他说的是真的。
    TBlobField.LoadFromFile('test.jpg') 一定可以。
    TJPEGIMage.LoadFromFile('test.jpg');我没试过,不敢乱说。
    TImage.Picture.LoadFromFile('test.jpg')也一定可以。
      

  18.   

    TJPEGIMage.LoadFromFile('test.jpg')肯定不行,因为它没有派生LoadFromFile
      

  19.   

    我错了.
    TBlobField.LoadFromFile('test.jpg');TBlobField.LoadFromFile('test.bmp');
    我试了一下都是可以的;
     
      

  20.   

    我想可能是遇上DELPHI的BUG了。多谢大家关心。