Reign.Video.ImageBMPC.Save C# (CSharp) Method

Save() public static method

public static Save ( byte data, int width, int height, Stream outStream, ImageSavedCallbackMethod imageSavedCallback ) : void
data byte
width int
height int
outStream Stream
imageSavedCallback ImageSavedCallbackMethod
return void
        public static void Save(byte[] data, int width, int height, Stream outStream, ImageSavedCallbackMethod imageSavedCallback)
        {
            try
            {
                using (var dataStream = new MemoryStream(data))
                {
                    var writer = new BinaryWriter(outStream);

                    // File Type
                    int type = Streams.MakeFourCC('b', 'm', 'p', 'c');
                    writer.Write(type);

                    // Version
                    float version = 1.0f;
                    writer.Write(version);

                    // Meta Data
                    writer.Write(width);
                    writer.Write(height);
                    writer.Write(true);// Zip Compressed

                    // Data
                    using (var compressedDataStream = new MemoryStream())
                    using (var compressedStream = new GZipStream(compressedDataStream, CompressionMode.Compress))
                    {
                        dataStream.CopyTo(compressedStream);
                        #if !WINRT
                        compressedStream.Close();
                        #endif

                        var compressedData = compressedDataStream.ToArray();
                        writer.Write(compressedData.Length);
                        writer.Write(compressedData);
                    }
                }
            }
            catch (Exception e)
            {
                if (imageSavedCallback != null) imageSavedCallback(false);
            }

            if (imageSavedCallback != null) imageSavedCallback(true);
        }

Usage Example

Example #1
0
 public static void Save(byte[] inData, int width, int height, Stream outStream, ImageFormats imageFormat, ImageSavedCallbackMethod imageSavedCallback)
 {
     switch (imageFormat)
     {
                         #if !NaCl && !XNA && !VITA && !WP8
     case ImageFormats.BMPC: ImageBMPC.Save(inData, width, height, outStream, imageSavedCallback); break;
                         #endif
                         #if WINRT
     case ImageFormats.PNG: ImagePNG.Save(inData, width, height, outStream, imageSavedCallback); break;
                         #endif
     default: Debug.ThrowError("Image", string.Format("Unsuported format: ", imageFormat)); break;
     }
 }