2009-05-08 9 views
0

私は、これはC#で再符号化する必要がなかったいくつかのDelphiのコードがあります。C#とは何ですか?Delphi TDecompressionStreamに相当しますか?

procedure TDocSearchX.Decompress; 
var 
BlobStream:TBlobStream; 
DecompressionStream:TDecompressionStream; 
FileStream:TFileStream; 
Buffer:array[0..2047] of byte; 
count:integer; 
begin 
    BlobStream:=TBlobStream.Create(DocQueryDATA,bmRead); 
    DecompressionStream:=TDecompressionStream.Create(BlobStream); 
    FileStream:=TFileStream.Create(FDocFile,fmCreate); 
    while True do 
    begin 
     Count := DecompressionStream.Read(Buffer, 2048); 
     if Count <> 0 then FileStream.Write(Buffer, Count) else Break; 
    end; 
    Blobstream.Free; 
    DecompressionStream.Free; 
    FileStream.Free; 
end; 

これを残していると私は(それが現在データベースに格納された)画像を解凍する必要が書いた請負業者を。私はファイルにイメージを抽出することができましたが、C#を使用してどのように解凍するのか分かりませんでしたか?

+0

私はDelphiに精通していませんが、.NETに行く限り正しい方向に向けることができます。 TDecompressionStreamはどのような圧縮アルゴリズムを使用していますか? – Noldorin

答えて

3

TDecompressionStreamはおそらくZLibを使用しているようです。ここではZLIBの.NETライブラリです:

http://www.componentace.com/zlib_.NET.htm

+0

ありがとう、私はちょうどこれを試して、それは治療を働く:-) –

+0

クール、私は助けることがうれしいです。 – x0n

1

私の知る限り、TDecompressionStreamクラスに相当する.NET Frameworkはありません。あなたは画像を解凍する小さなコンバータアプリをDelphiで書くことができますか?次に、C#コード内で.Netをサポートする任意の圧縮ライブラリ(SharpZipLibなど)を自由に使用できます。

+0

ええ、TDecompressionStreamはZLIB圧縮を使用しているようですので、SharpZipLipのようなサードパーティ製のライブラリを使う必要があります(他にもありますが、これが最適です)。 – Noldorin

0

あなたは、すでに使用したのと同じ圧縮を保つDLLにDelphiの解凍ルーチンをロールとのPInvokeを使ってC#からそれを使用する必要がある場合。

圧縮を置き換える場合は、バッチプロセスを使用してDelphiの圧縮イメージを抽出し、元のフォーマットに解凍し、お気に入りのC#ライブラリで再圧縮します。

関連する問題