大家帮我分析一下代码有什么问题?运行时总是说bitmap  is not valid
myjpeg.Assign(image1.Picture.bitmap)时,可运行,但是不写入数据库!;
谢谢了:)
{ 图片存入数据库 }
MyJPEG := TJPEGImage.Create;
  try
      MS:=TMemoryStream.create;
      myjpeg.Assign(image1.Picture.graphic);
      myjpeg.SaveToStream(MS);
      MS.Seek(soFromBeginning,0);
      MS.Position:=0;
  finally
      MyJPEG.Free;
  end;
  TBlobField(form1.ADOTable1.FieldbyName('img')).LoadFromStream(MS);
  form1.ADOTable1.Post;
  showmessage('图像保存成功!');

解决方案 »

  1.   

    定义了两个变量
    myjpeg:Tjpegimage
    ms:Tmemorystream
      

  2.   

    我用的程序,用法不太一样,但是基本上都差不多。
    注意在接口部分加上Jpeg,不然的话肯定不行。
    procedure TForm1.Button1Click(Sender: TObject);
    var
      MyJPEG : TJPEGImage;
      MS: TMemoryStream;
    begin
      Image1.picture.loadfromfile('d:\work\pic.bmp');    
      MyJPEG:=TJPEGImage.Create;
      Try
        MyJPEG.Assign(Image1.Picture.Graphic);     
        MS:=TMemoryStream.Create;
        MyJPEG.SaveToStream(MS);
        MS.Position:=0;
        ADOQuery1.Append;
        TBlobField(ADOQuery1.FieldByName('pic')).LoadFromStream(MS);
        ADOQuery1.Post;
        messagebox(getactivewindow(),'图像保存完毕!','保存',mb_ok);
        MS.Free;
      Finally
        MyJPEG.Free;
      end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      MyJPEG : TJPEGImage;
      MS: TMemoryStream;
    begin
      MS:=TMemoryStream.Create;
      MyJPEG:=TJPEGImage.Create;
      ADOQuery1.Requery;
      try
        TBlobField(ADOQuery1.FieldByName('pic')).SaveToStream(MS);
        MS.Position:=0;
        MyJPEG.LoadFromStream(MS);
        Image1.Picture.Bitmap.Assign(MyJPEG);
      finally
        MS.Free;
        MyJPEG.Free;
      end;
    end;