イメージをバイト配列にエンコードしてサーバーに送信しようとしています。 エンコーディングと送信パーツは問題ありませんが、私の問題はバイト配列が大きすぎて送信に時間がかかりすぎて圧縮が速くなると思ったためです。実際の問題は私がsystem.ioやストリームを使うことができないということです。私は.net 2.0をターゲットにしています。 ありがとうございます。ストリームまたはシステムなしでバイト配列を圧縮する方法
3
A
答えて
17
using System.IO;
using System.IO.Compression;
コード:
使用7zipをライブラリを更新しました
public static byte[] Compress(byte[] data)
{
MemoryStream output = new MemoryStream();
using (DeflateStream dstream = new DeflateStream(output, CompressionLevel.Optimal))
{
dstream.Write(data, 0, data.Length);
}
return output.ToArray();
}
public static byte[] Decompress(byte[] data)
{
MemoryStream input = new MemoryStream(data);
MemoryStream output = new MemoryStream();
using (DeflateStream dstream = new DeflateStream(input, CompressionMode.Decompress))
{
dstream.CopyTo(output);
}
return output.ToArray();
}
:
http://www.splinter.com.au/compressing-using-the-7zip-lzma-algorithm-in/
// Convert the text into bytes
byte[] DataBytes = ASCIIEncoding.ASCII.GetBytes(OriginalText);
// Compress it
byte[] Compressed = SevenZip.Compression.LZMA.SevenZipHelper.Compress(DataBytes);
// Decompress it
byte[] Decompressed = SevenZip.Compression.LZMA.SevenZipHelper.Decompress(Compressed);
0
圧縮
public static byte[] Compress(byte[] inputData)
{
if (inputData == null)
throw new ArgumentNullException("inputData must be non-null");
MemoryStream output = new MemoryStream();
using (DeflateStream dstream = new DeflateStream(output, CompressionLevel.Optimal))
{
dstream.Write(inputData, 0, inputData.Length);
}
return output.ToArray();
}
OR
public static byte[] Compress(byte[] inputData)
{
if (inputData == null)
throw new ArgumentNullException("inputData must be non-null");
using (var compressIntoMs = new MemoryStream())
{
using (var gzs = new BufferedStream(new GZipStream(compressIntoMs,
CompressionMode.Compress), BUFFER_SIZE))
{
gzs.Write(inputData, 0, inputData.Length);
}
return compressIntoMs.ToArray();
}
}
解凍
public static byte[] Decompress(byte[] inputData)
{
if (inputData == null)
throw new ArgumentNullException("inputData must be non-null");
MemoryStream input = new MemoryStream(inputData);
MemoryStream output = new MemoryStream();
using (DeflateStream dstream = new DeflateStream(input, CompressionMode.Decompress))
{
dstream.CopyTo(output);
}
return output.ToArray();
if (inputData == null)
throw new ArgumentNullException("inputData must be non-null");
}
OR
public static byte[] Decompress(byte[] inputData)
{
if (inputData == null)
throw new ArgumentNullException("inputData must be non-null");
using (var compressedMs = new MemoryStream(inputData))
{
using (var decompressedMs = new MemoryStream())
{
using (var gzs = new BufferedStream(new GZipStream(compressedMs, CompressionMode.Decompress), BUFFER_SIZE))
{
gzs.CopyTo(decompressedMs);
}
return decompressedMs.ToArray();
}
}
}
+0
opは、ライブラリを持たない別のプラットフォームで開発しているときにSystem.IO名前空間を使用できないと述べています。 – mjb
関連する問題
- 1. PNG圧縮バイト配列をBMPバイト配列に変換する
- 2. java.util.zipを使用してバイト配列を圧縮する方法は?
- 3. JavaでGZIPを使用してバイト配列を圧縮する
- 4. 圧縮された(上位バイトを削除した)バイトをUnicode文字列に変換する方法は?
- 5. java.awt.Imageを圧縮付きTIFFバイト配列に変換する
- 6. C#でバイト[]を圧縮(および解凍)する方法は?
- 7. C#をストリームから圧縮して圧縮する
- 8. システム間キャッシュのストリームからバイト配列を作成する
- 9. 圧縮スパース列(CSC)または圧縮スパース行(CSR)スパース行列?
- 10. 1024 * 1024 * 1024 * 4スパース配列のサイズを圧縮する方法
- 11. WCF RESTサービスがストリームではなくバイト配列を受け取る方法
- 12. 最後の2バイトを圧縮してエンコードする文字列
- 13. スパースビット配列を圧縮する
- 14. 圧縮ファイルが65536バイトに達したとき、Ionic.zlibは圧縮を停止しますか? - C#
- 15. ストリームから直接圧縮
- 16. Zlib互換の圧縮ストリーム?
- 17. 圧縮されたOpusフレームのサイズ(バイト)
- 18. ZipInputStreamは* actual *(すなわち圧縮された)バイトを報告しません
- 19. 私たちは、少ないメモリでnodeJsを使用してシステムのフォルダを圧縮する方法
- 20. パフォーマンスの面でJSON文字列を圧縮し、ラジオを圧縮するための最良の方法
- 21. HTTPリクエストを圧縮してメモリに圧縮されたバッファをロードせずに圧縮する方法
- 22. GZIPストリームとメモリストリームを利用したCSVの適切な圧縮
- 23. バイト配列のZF2ストリーム
- 24. 画像をバイト配列としてストリーム
- 25. GZIPStream圧縮は常に10バイトを返します
- 26. 類似性を維持しながら大きなバイト配列を圧縮する
- 27. ダイナミックな配列| ExpandoObject |で圧縮された初期化構文
- 28. バイト配列またはストリームからファイル名を取得
- 29. 圧縮または
- 30. JavaScriptでの配列の圧縮
は、なぜあなたはsystem.ioを使用するか、好奇心の外にストリームすることはできませんか?別のプラットフォームを使用していますか? – rolls
私はwebglとwebglをコーディングしています.netライブラリのほとんどは使用できません – Henjin