数据库ACCESS。
之前用dbimage控件,将jpe图片作为ole保存到数据库中。数据库剧增(估计是因为把jpg转化成了位图的原因),代码如下
procedure Tmainform.Button1Click(Sender: TObject);
var
  Ind,i:Integer;
  FName:string;
  AJPeg:TJPEGImage;
  temp:TBitmap;
begin
  if OpenPictureDialog1.Execute then
  begin   
    Ind:=OpenPictureDialog1.Files.Count;
    for i:=0 to Ind-1 do
    begin
      FName:=OpenPictureDialog1.Files.Strings[i];
      Application.ProcessMessages;
      ADODataSet1.edit;
      //DBImage1.Picture.AsString:=FName;
      if UpperCase(Copy(FName,Length(Fname)-3,4))='.JPG' then
      begin
        AJpeg:=TJPEGImage.Create;
        AJpeg.LoadFromFile(FName);
        Temp:=TBitmap.Create;
        Image1.Height:=Ajpeg.Height;
        Image1.Width:=Ajpeg.Width;
        Image1.Picture:=nil;
        Image1.Canvas.Draw(0,0,Ajpeg);
        DBImage1.Picture:=Image1.Picture;
        AJpeg.Free;
        Image1.Free;
      end
      else
        DBImage1.Picture.LoadFromFile(FName);
      ADODataSet1.Post;
    end;
  end;
end;
现在想用什么办法将数据库中jpe保存空间变小。
用Timage控件,每次在一个文件夹中载入,
问题是:怎么让每次数据库当前纪录项中的数据和image同步。网上下了个代码还是不是很懂。

解决方案 »

  1.   

    1.为什么用bmp保存? ACCESS数据管不能保存jpg格式吗?
    2.把你网上下载的代码贴出来看看。
      

  2.   

    不能啊我用ole保存总是失败
      

  3.   

    我一般用这个方法:数据库中保存文件的路径,比方\\servername\createtime\filename
    调用时直接调用文件
      

  4.   

    aqMaster.Edit;
        TBlobField(aqMaster.FieldByName('FileContent')).LoadFromFile(sFile);
        aqMaster.FieldByName('PictureName').AsString := sFileName;
        aqMaster.Post;
      

  5.   

    用流的方式存取就是啊
    http://community.csdn.net/Expert/topic/4675/4675019.xml?temp=.4098627
      

  6.   

    To:tttk(网络芝麻) 你是怎么压缩的?能贴出一段源码吗?
      

  7.   

    当时我尝试了很多种压缩方案,最后找到一款叫做PowerArc的压缩包,压缩比非常的高。下载地址:http://www.softcomplete.com/download.aspvar
      InStream, OutStream: TMemoryStream;
    begin
    ……
    //设置正文:从数据库中解压缩
    (FieldByName('body') as TBlobField).SaveToStream(InStream);
    InStream.Position := 0;
    OutStream := TMemoryStream.Create;
    PowerArcDecompress(InStream, OutStream, FOnCompress);
    OutStream.Position := 0;然后你就可以把OutStream用在你的图片显示上了:
    bm := TBitmap.Create;
    bm.LoadFromStream(OutStream);