我用的是dbimage控件,,想存放jpg格式的图片。。怎么弄,
网上有代码 但是看不懂,,不好衔接。。我是做人事管理模块,想存放员工照片。

解决方案 »

  1.   


    use Jpeg//----------------------向数据库加入图片--------------------
    procedure TForm1.suiButton1Click(Sender: TObject);
    var
      mStream:TMemoryStream;
      JpgFile:TjpegImage;
    begin
         //-----------向数据库添加图片
         adoquery1.Append;
         mstream:=TMemoryStream.Create;
         JpgFile:=TjpegImage.Create ;
      if OpenDialog.Execute then
      begin
      try
        mstream.LoadFromFile(OpenDialog.FileName);
        mStream.Position :=0;
        jpgfile.LoadFromStream(MStream);
         adoQuery1.FieldByName('xp').Assign(JpgFile);
        adoquery1.Post;
       finally
          mstream.Free;
       end;
       end;
    end;//--------------------------------显示图片----------------------------------
    procedure TForm1.suiButton2Click(Sender: TObject);
    var 
      mStream:TMemoryStream; 
      JpgFile:TjpegImage; 
    begin
      //显示图片
      if not ADOQuery1.FieldByName('xp').IsNull then begin ;
        mStream:=TMemoryStream.Create ; 
        JpgFile:=TjpegImage.Create ; 
        TBlobField(ADOQuery1.FieldByName('xp')).SaveToStream(mStream);  
        mStream.Position :=0; 
        jpgfile.LoadFromStream(MStream); 
        DBImage1.Picture.Assign(JpgFile);
     end 
     else begin
       //image2.Picture :=nil;
     end; 
    end;
      

  2.   


    DBImage1.Picture.Assign(JpgFile);
      

  3.   

    我太笨了。。衔接不好。。
    [Error] uSR072125.pas(506): Undeclared identifier: 'TjpegImage'
    定义的时候就有错。。
      

  4.   


    //----------------------向数据库加入图片--------------------
    procedure TForm1.suiButton1Click(Sender: TObject);
    var
      mStream:TMemoryStream;
      JpgFile:TjpegImage;
    MyBmp: TBitmap;
    begin
         //-----------向数据库添加图片
         adoquery1.Append;
         mstream:=TMemoryStream.Create;
         JpgFile:=TjpegImage.Create ;
         MyBmp:=TBitmap.Create;
      if OpenDialog.Execute then
      begin
      try
        mstream.LoadFromFile(OpenDialog.FileName);
        mStream.Position :=0;
        jpgfile.LoadFromStream(MStream);
         adoQuery1.FieldByName('xp').Assign(JpgFile);
        MyBmp.Assign(jpgfile);
        DBImage1.Picture.Bitmap.Assign(mybmp);{显示图片}
        adoquery1.Post;{这句改到另一按钮中去,例如那个按钮是保存资料用的}
       finally
          mstream.Free;
       end;
       end;
    end;
      

  5.   

    那句错是要引用单元: Jpeg
      

  6.   

    选文件时最好用OpenPictureDialog控件,可以在选的过程中看到图片
    另:DBImage1的Stretch属性设为TRUE,这样才可以在DBImage1看到全图,基本是这样操作的了
      

  7.   

    我是在已有的记录上添加图片信息。。
    也就是说已经有此人的其他文本信息了。。用这个代码也可以吧,,adoquery1.Append;这个就不用了吧?
    已经是修改状态了。。
      

  8.   

    procedure TForm2125.but_ReadPicClick(Sender: TObject);
    var
      mStream:TMemoryStream;
      JpgFile:TjpegImage;
      MyBmp: TBitmap;
    begin
        if cds_Main.ReadOnly then exit;
        mstream:=TMemoryStream.Create;
        JpgFile:=TjpegImage.Create ;
        MyBmp:=TBitmap.Create;
        if OpenDialog1.Execute then
        begin
          try
            mstream.LoadFromFile(OpenDialog1.FileName);
            mStream.Position :=0;
            jpgfile.LoadFromStream(MStream);
            cds_main.FieldByName('photo').Assign(JpgFile);
            MyBmp.Assign(jpgfile);
            DBImage1.Picture.Bitmap.Assign(mybmp);
            cds_main.Post;
          finally
          mstream.Free;
          end;
        end;end;
      

  9.   

    恩。。算是的。。本来是用
    begin
       if cds_Main.ReadOnly then exit;
       if opendialog1.Execute then
       begin
         try
           if not (cds_Main.state=dsInsert) or not (cds_Main.state=dsEdit) then cds_Main.edit;
           cds_MainPhoto.LoadFromFile(opendialog1.FileName)
           except
                dbimage1.picture:=nil;
           end;
         end;
    end; 
    但是因为dbimage控件好像只能存放位图
      

  10.   


    procedure TForm2125.but_ReadPicClick(Sender: TObject); 
    var 
      mStream:TMemoryStream; 
      JpgFile:TjpegImage; 
      MyBmp: TBitmap; 
    begin 
        if cds_Main.ReadOnly then exit; 
        mstream:=TMemoryStream.Create; 
        JpgFile:=TjpegImage.Create ; 
        MyBmp:=TBitmap.Create; 
        if OpenDialog1.Execute then 
        begin 
          try 
            mstream.LoadFromFile(OpenDialog1.FileName); 
            mStream.Position :=0; 
            jpgfile.LoadFromStream(MStream); 
            cds_main.FieldByName('photo').Assign(JpgFile); 
            MyBmp.Assign(jpgfile); 
            MyBmp.Position :=0;{加了这句}
            DBImage1.Picture.Bitmap.Assign(mybmp); 
            cds_main.Post; 
          finally 
          mstream.Free; 
          end; 
        end; end;
      

  11.   

    示例只是读入图片到DBImage1,你结合写数据表的操作就行了.
      

  12.   

    [Error] uSR072125.pas(535): Undeclared identifier: 'Position'  显示的错就是你加的那句上
    [Fatal Error] sr072125.dpk(50): Could not compile used unit 'uSR072125.pas'
      

  13.   

    用IMAGE控件不一样吗,不也能显示吗