public static Save ( byte data, int width, int height, Stream outStream, ImageSavedCallbackMethod imageSavedCallback ) : void | ||
data | byte | |
width | int | |
height | int | |
outStream | Stream | |
imageSavedCallback | ImageSavedCallbackMethod | |
Résultat | 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);
}
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; } }