把jpg图片当成文件以二进制形式存入.

解决方案 »

  1.   

    只能用流的形式存进去,用dbimage没用的用一个image用来显示tblobfield(table1.fieldbyname('照片')).loadfromfile....
      

  2.   

    利用 TmemoryStream  TfileStream  Tblobstream 
      

  3.   

    把jpg保存在blob字段中,显示用image控件就行了
      

  4.   

    //保存
    procedure TForm1.ImageIntoDBBitBtnClick(Sender: TObject);
    begin
      try
        with Query1 do
          begin
            close;
            sql.clear;
            sql.add('insert into img (imga) values(:imag)');
          end;
        try
          if FileName<>'' then
            ParamByName('Img').LoadfromFile(FileName,ftGraphic)
          else
            ParamByName('Img') .asBlob:='';
          Query1.ExecSQL;
        except
          ShowMessage('图片保存出错!');
          exit;
        end;
      except
      end;
    end;//读取
    procedure TForm1.ImageFromDBBitBtnClick(Sender: TObject);
    var
      m_jpegstream:tmemorystream;
    begin
      with Query1 do
      begin
        close;
        sql.clear;
        sql.Add('select imga from img');
        try
          Open;
        except
          exit;
        end;
      end;
      if (Query1.FieldByName('imga') as tblobfield).asstring='' then
      begin
        exit;
      end
      else
      begin
        try
        try
          m_jpegStream:=TMemoryStream.Create;
          (Query1.fieldbyname('imga') as TBlobField).SaveToStream(m_JpegStream);
          m_JpegStream.Position:=0;
          try
            image2.Picture.Graphic:=nil;
            image2.Picture.Graphic:=TJpegImage.Create;
            image2.Picture.Graphic.LoadFromStream(m_JpegStream);  //读Jpeg
          except
            Image2.Picture.Bitmap.LoadFromStream(m_JpegStream);  //读Bmp
          end;
        except
        end;
        finally
          m_JpegStream.Free;
          Query1.Close;
          Query1.UnPrepare;
        end;
      end;
    end;//BMP转换为JPG
    procedure TStuXXSLForm.LoadImageBitBtnClick(Sender: TObject);
    var
      MyJpeg:TJpegImage;
    begin
      inherited;
      if OpenPictureDialog1.Execute then
      begin
        FileName:=OpenPictureDialog1.FileName;
        Image1.Picture.LoadFromFile(FileName);
        if ExtractFileExt(FileName)='.Bmp' then
        begin
          MyJpeg:= TJpegImage.Create;
          MyJpeg.Assign(Image1.Picture.Bitmap);
          FileName:='Photo.Jpg';
          MyJpeg.SaveToFile(FileName);
          MyJpeg.Free;
        end;
      end;
    end; 
      

  5.   

    用1stClass控件,里面有个fcDBImager1控件可以读取保存.jpg, .bmp, ico文件
      

  6.   

    1stClass一定可以,我用过, 用其它什么方式,数据流呀! 转换,都没什么用,很烦
      

  7.   

    http://mydelphi.8u8.com/kj.htm 有下
      

  8.   

    用一个image用来显示tblobfield(table1.fieldbyname('照片')).loadfromfile....同意这样的存法,我就是这样做的,相信我没错的