im SLsharpziplipを使用してネットワークに送信する前にバイト[]を圧縮しようとしました。 byte []にはすでにjpegエンコーダによって圧縮されたjpegデータが含まれています。シルバーライトでメモリストリームを圧縮する
jpegがすでにイメージを圧縮している場合は、なぜそれを圧縮する必要がありますか?ここ
は何が起こったかである:
私は5K〜txtファイルのサイズは、txtファイルに[]バイトでバイトを書いて、私はWinZipのとそれを圧縮し、結果ファイルは〜2Kましたファイルサイズが約50%削減されます。しかし、私はバイト[]でそれをやろうとし、slsharziplipを使ってバイト[]を圧縮しようとすると、サイズの縮小は最小限に抑えられます。ここ
は私が使用するコードです:
MemoryStream msCompressed = new MemoryStream();
GZipOutputStream gzCompressed = new GZipOutputStream(msCompressed);
gzCompressed.SetLevel(9);
// allframes is a byte array.
gzCompressed.Write(allframes, 0, allframes.Length);
gzCompressed.Finish();
gzCompressed.IsStreamOwner = false;
gzCompressed.Close();
// i used byte[] compresseddata = msCompressed.ToArray() but i thought i'll try this too.
msCompressed.Seek(0, SeekOrigin.Begin);
byte[] compresseddata = new byte[msCompressed.Length];
msCompressed.Read(compresseddata, 0, compresseddata.Length);
================================ ==========================================
コードのデバッグから、私はallframes.Lengthとcompresseddata.lenghtの間のサイズの違いが最小限であることが分かります。同じデータがテキストファイルに書き込まれ、winzipで圧縮された場合、そのサイズは50%縮小されます。
これは私がtxtファイルに同じデータを書き込む方法です:
TextWriter tw = new StreamWriter(MainPage.fs); // fs is a filestream.
foreach (byte b in allframes)
{
tw.Write(b);
}
========================== ========================================== ===
私は何か間違っているのですか?私は何かを誤解しています!アップフロント:)