public static void CompressHuffman(DownsampleFormat format, string dest) { DownsampleFormat downFormat = format; byte[] data = new byte[format.Ylen + format.Cblen + format.Crlen]; format.data.CopyTo(data, 0); HuffmanTree tree = new HuffmanTree(); tree.CreateTree(tree.GenerateListOfNodes(data)); byte[] decompressDict = tree.SerializeDictionaryToBytes(); byte[] dictionarySize = BitConverter.GetBytes(decompressDict.Length); //svaki integer ima duzinu od 4 bajta u C# byte[] bmpWidth = BitConverter.GetBytes(format.bmpWidth); //4 bajta byte[] bmpHeight = BitConverter.GetBytes(format.bmpHeight); //4 bajta byte[] stride = BitConverter.GetBytes(format.bmpStride); //4 bajta byte[] downsampleChannels = BitConverter.GetBytes(format.code); //4 bajta byte[] YDataLen = BitConverter.GetBytes(format.Ylen); //4 bajta byte[] CbDataLen = BitConverter.GetBytes(format.Cblen); //4 bajta byte[] CrDataLen = BitConverter.GetBytes(format.Crlen); //4 bajta using (var writer = new FileStream(dest, FileMode.Create)) { writer.Write(bmpWidth, 0, bmpWidth.Length); writer.Write(bmpHeight, 0, bmpHeight.Length); writer.Write(stride, 0, stride.Length); writer.Write(downsampleChannels, 0, downsampleChannels.Length); writer.Write(YDataLen, 0, YDataLen.Length); writer.Write(CbDataLen, 0, CbDataLen.Length); writer.Write(CrDataLen, 0, CrDataLen.Length); writer.Write(dictionarySize, 0, dictionarySize.Length); writer.Write(decompressDict, 0, decompressDict.Length); byte[] allData = BitArrayToByteArray(tree.Encode(data)); writer.Write(allData, 0, allData.Length); } }