数据库中怎样实现存入jpg、Gif等图片?数据库为Delphi自带桌面数据库,或SQLSERVER2000。我用了一个Button1、一个OpenPictureDialog1和一个Image1组件,对于按钮的单击事件的代码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
   if OpenpictureDialog1.Execute then
      Image1.Picture.LoadFromFile(OpenpictureDialog1.FileName);
end;
我想通过对话框打开一张jpg图片到Image1组件显示,该代码没有成功。
所以存入数据库就谈不上了

解决方案 »

  1.   

    首先说你的打开图片的问题,  在头文件处加JPEG,    就能打开jpg文件了  当然  类型里要有jpg呀
    下面说把图片存入SQL的问题  不知道你是用什么连接的数据库  我是用ADOQuery连接的  
    var
       jpg:TJpegImage;
    begin
        jpg:=TJpegImage.Create;
        jpg.LoadFromFile(OpenPictureDialog1.FileName);
        ADOQuery2.Append; 
        ADOQuery2.FieldByName('图片').Assign(jpg);
        ADOQuery2.Post;
        jpg.Free;
    end;
    这样就存到数据库里了
      

  2.   

    martian6125(小峰)的方法可以!最好在前面加个判断 判断图片格式
    var
      PersonPictureStream,SheetPictureStream:TMemoryStream;
      PersonPictureExtName,SheetPictureExtName:String;
      PersonPictureJPEG,SheetPictureJPEG:TJPEGImage;
      PersonPictureBitMap,SheetPictureBitMap:TBitMap;
    begin
      PersonPictureStream:=TMemoryStream.Create;
      SheetPictureStream:=TMemoryStream.Create;
      if PersonPicturePath<>'' then
      begin
       PersonPictureExtName:=ExtractFileExt(PersonPicturePath); //取得图片文件扩展名
        if (UpperCase(PersonPictureExtName)='.JPG') or (UpperCase(PersonPictureExtName)='.JPEG') then  //转换为大写
        begin
          try
            PersonPictureJPEG:=TJPEGImage.Create;
            PersonPictureJPEG.LoadFromFile(PersonPicturePath);
            PersonPictureJPEG.SaveToStream(PersonPictureStream);
            PersonPictureStream.Position:=0;
          finally
            PersonPictureJPEG.Free;
          end;
        end;
        if (UpperCase(PersonPictureExtName)='.BMP') then  //转换为大写
        begin
          try
            PersonPictureJPEG:=TJPEGImage.Create;
            PersonPictureBitMap:=TBitMap.Create;
            PersonPictureBitMap.LoadFromFile(PersonPicturePath);
            PersonPictureJPEG.Assign(PersonPictureBitMap);
            PersonPictureJPEG.CompressionQuality:=10;
            PersonPictureJPEG.Compress;
            PersonPictureJPEG.SaveToStream(PersonPictureStream);
            PersonPictureStream.Position:=0;
          finally
            PersonPictureBitMap.Free;
            PersonPictureJPEG.Free;
          end;
        end;
        TBlobField(DM.PersonQuery.FieldByName('PersonPicture')).LoadFromStream(PersonPictureStream);
       end;
    DM.PersonQuery.post;