Reign.Video.ImageMetro.save C# (CSharp) Method

save() protected static method

protected static save ( byte inData, int width, int height, Stream outStream, ImageFormats imageFormat, ImageSavedCallbackMethod imageSavedCallback ) : void
inData byte
width int
height int
outStream Stream
imageFormat ImageFormats
imageSavedCallback ImageSavedCallbackMethod
return void
		protected static async void save(byte[] inData, int width, int height, Stream outStream, ImageFormats imageFormat, ImageSavedCallbackMethod imageSavedCallback)
		{
			try
			{
				using (var memoryStream = new InMemoryRandomAccessStream())
				{
					Guid encodeID = new Guid();
					switch (imageFormat)
					{
						case (ImageFormats.PNG): encodeID = BitmapEncoder.PngEncoderId; break;
						case (ImageFormats.JPG): encodeID = BitmapEncoder.PngEncoderId; break;
						case (ImageFormats.BMP): encodeID = BitmapEncoder.PngEncoderId; break;
						default: Debug.ThrowError("ImageMetro", "Unsuported image format: " + imageFormat.ToString()); break;
					}

					BitmapEncoder encoder = await BitmapEncoder.CreateAsync(encodeID, memoryStream);
					encoder.SetPixelData(BitmapPixelFormat.Rgba8, BitmapAlphaMode.Straight, (uint)width, (uint)height, 96, 96, inData);
					await encoder.FlushAsync();
				
					var stream = memoryStream.AsStream();
					stream.Position = 0;
					await stream.CopyToAsync(outStream);
				}
			}
			catch (Exception e)
			{
				if (imageSavedCallback != null) imageSavedCallback(false);
			}

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