image类型怎样压缩保存到数据库,读出时解压释放

解决方案 »

  1.   

    什么意思?
    转换成 JPG 格式就可以压缩了
      

  2.   

    如果你用流的方式,很容易作。因为TMemoryStream 的Read,write方法都可以重载,你在里面写一个压缩解压缩的方法就行了。
      

  3.   

    保存是可以了,那如何压缩呢?压缩解压缩怎么写。要用TDecompressionStream么?
    多谢!
      

  4.   

    jpeg 有个调压缩率的属性,叫compress什么的。。你给它赋个值。。
      

  5.   

    用一个函数即实现流的压缩和解压,使用方法:
    ZIP(源流,目标流,True/False)TRUE为压缩,FALSE为解压
    函数如下:
    function ZIP(mInputStream: TStream; mOutputStream: TStream;Compress:BOOL): BOOL;
    var
      I: Integer;
      p:pchar;
      TCS:TCompressionStream;
      TDS:TDecompressionStream;
    begin
     result:=false;
      if not (Assigned(mInputStream) and Assigned(mOutputStream)) then Exit;
     try
      if Compress then TCS:=TCompressionStream.Create(clMax,mOutputStream) else TDS:=TDecompressionStream.Create(mOutputStream);//其中的clMax表示压缩级别,可以更改,值是下列参数之一:clNone, clFastest, clDefault, clMax
      getMem(p,mInputStream.size);
      mInputStream.ReadBuffer(p^,mInputStream.Size );
      if Compress then TCS.WriteBuffer(p^,mInputStream.Size ) else TDS.WriteBuffer(p^,mInputStream.Size );  //关键代码:写入流
     finally
      if Compress then TCS.Free else TDS.Free;
      FreeMem(p);
     end;
     result:=true;
    end;