我建立一个image控件,保存学生管理系统中的学生照片,代码如下:
 tblobfield(table1.FieldByName('s_photo')).Assign(image1.Picture);
为什么只能保存.bmp格式的文件,有没有方法可以保存其他格式的图片文件.

解决方案 »

  1.   

    再问一个,怎么清除image中显示的图片,比如我要新增一条记录时,image的图象首先必须是空的.
      

  2.   

    使用tblobfield(table1.FieldByName('s_photo')).LoadFromStream
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject); 
    var 
        m:Tmemorystream; 
    begin 
        m:=Tmemorystream.Create; 
        try
            m.LoadFromFile('c:\11.jpg'); 
            adoquery1.SQL.Text:='insert pi (picture) values (:m)'; 
            adoquery1.Parameters[0].LoadFromStream(m,ftGraphic); 
            adoquery1.ExecSQL; 
        finally 
            m.Free; 
        end; 
    end;//没测试... -_-!
      

  4.   

    保存试试这样:
    tblobfield(table1.FieldByName('s_photo')).Assign(image1.Picture.Graphic);
    清除试试这样:
    image1.Picture.Graphic := nil;
      

  5.   

    我写了一个控件TADBImage,直接连接图形字段,可以通过粘贴和读文件的方式输入图形,
    还可以指定保存到数据库中的格式是bmp还是jpeg.调用方法ClearGraphic清除图形.
    www.bluec.com.cn中有下载.
      

  6.   

    DBImage只能存bmp图像,要存其他格式的,必须自己写代码,一般从内存流中存取。
      

  7.   

    image1.Picture.Graphic := nil;可以,但是tblobfield(table1.FieldByName('s_photo')).Assign(image1.Picture.Graphic);保存JPEG图片时提示错误。
    我在一本参考书上看到stream:tblobstream的定义,但运行提示没有tblobstream的类型定义
      

  8.   

    用的是d5吧?d7可以使用上面的方法。
    d5的话可以试试下面的方法:
    从磁盘提取数据:
      ADOTable1.Insert;
      TBlobField(ADOTable1.FieldByName('s_photo').LoadFromFile('c:\1.jpg');
      ADOTable1.Post;
    从TImage提取数据:
    var
      AStream: TStream;
    begin
      ADOTable1.Insert;
      AStream := ADOTable1.CreateBlobStream(ADOTable1.FieldByName('s_photo'), bmReadWrite);
      Image1.Picture.Graphic.SaveToStream(AStream);
      AStream.Free;
      ADOTable1.Post;
    end;
    TBlobStream定义在DBTables单元,要使用的话需uses DBTables