فشرده سازی اطلاعات توسط الگوریتم Zstandard فیسبوک
نویسنده: محمد جواد ابراهیمی
تاریخ: ۱۳۹۷/۱۱/۰۷ ۷:۳۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
Install-Package ZstdNet
byte[] sourceData = GetData(); //for example : File.ReadAllBytes(filePath);
byte[] compressedData;
using (var compressor = new Compressor())
{
compressedData = compressor.Wrap(sourceData);
} var compressor = new Compressor(new CompressionOptions(compressionLevel: 5))
using (var decompressor = new Decompressor())
{
byte[] sourceData = decompressor.Unwrap(compressedData);
} public static class ZstdCompression
{
public static (decimal savedPercent, long savedSizeKB) Compress(string filePath, string savePath, int compressionLevel = 5)
{
var sourceData = File.ReadAllBytes(filePath);
byte[] compressedData;
using (var compressor = new Compressor(new CompressionOptions(compressionLevel)))
compressedData = compressor.Wrap(sourceData);
File.WriteAllBytes(savePath, compressedData);
var diff = sourceData.LongLength - compressedData.LongLength;
var savedpercent = (decimal)diff * 100 / sourceData.LongLength;
var savedSizeKB = diff / 1024;
return (savedpercent, savedSizeKB);
}
public static void Decompress(string filePath, string savePath)
{
var compressedData = File.ReadAllBytes(filePath);
byte[] decompressedData;
using (var decompressor = new Decompressor())
decompressedData = decompressor.Unwrap(compressedData);
File.WriteAllBytes(savePath, decompressedData);
}
} var compressInfo = ZstdCompression.Compress(@"c:\video.mp4", @"c:\compressedFile");
Console.Write($"Saved : {compressInfo.savedPercent}% ({compressInfo.savedSizeKB} KB)");
//Output => Saved : 57% (7530 KB)