public async static Task <WriteableBitmap> ToBitmapImageAsync(this Stream imageStream, Tuple <int, int> downscale, bool useDipUnits, InterpolationMode mode, ImageInformation imageInformation = null) { if (imageStream == null) { return(null); } using (IRandomAccessStream image = new RandomStream(imageStream)) { if (downscale != null && (downscale.Item1 > 0 || downscale.Item2 > 0)) { using (var downscaledImage = await image.ResizeImage(downscale.Item1, downscale.Item2, mode, useDipUnits, imageInformation).ConfigureAwait(false)) { BitmapDecoder decoder = await BitmapDecoder.CreateAsync(downscaledImage); downscaledImage.Seek(0); WriteableBitmap resizedBitmap = null; await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Low, () => { resizedBitmap = new WriteableBitmap((int)decoder.PixelWidth, (int)decoder.PixelHeight); using (var s = downscaledImage.AsStream()) { resizedBitmap.SetSource(s); } }); return(resizedBitmap); } } else { BitmapDecoder decoder = await BitmapDecoder.CreateAsync(image); image.Seek(0); WriteableBitmap bitmap = null; if (imageInformation != null) { imageInformation.SetCurrentSize((int)decoder.PixelWidth, (int)decoder.PixelHeight); imageInformation.SetOriginalSize((int)decoder.PixelWidth, (int)decoder.PixelHeight); } await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Low, () => { bitmap = new WriteableBitmap((int)decoder.PixelWidth, (int)decoder.PixelHeight); bitmap.SetSource(imageStream); }); return(bitmap); } } }
public async static Task<WriteableBitmap> ToBitmapImageAsync(this Stream imageStream, Tuple<int, int> downscale, bool useDipUnits, InterpolationMode mode, ImageInformation imageInformation = null) { if (imageStream == null) return null; using (IRandomAccessStream image = new RandomStream(imageStream)) { if (downscale != null && (downscale.Item1 > 0 || downscale.Item2 > 0)) { using (var downscaledImage = await image.ResizeImage(downscale.Item1, downscale.Item2, mode, useDipUnits, imageInformation).ConfigureAwait(false)) { BitmapDecoder decoder = await BitmapDecoder.CreateAsync(downscaledImage); downscaledImage.Seek(0); WriteableBitmap resizedBitmap = null; await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Low, () => { resizedBitmap = new WriteableBitmap((int)decoder.PixelWidth, (int)decoder.PixelHeight); using (var s = downscaledImage.AsStream()) { resizedBitmap.SetSource(s); } }); return resizedBitmap; } } else { BitmapDecoder decoder = await BitmapDecoder.CreateAsync(image); image.Seek(0); WriteableBitmap bitmap = null; if (imageInformation != null) { imageInformation.SetCurrentSize((int)decoder.PixelWidth, (int)decoder.PixelHeight); imageInformation.SetOriginalSize((int)decoder.PixelWidth, (int)decoder.PixelHeight); } await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Low, () => { bitmap = new WriteableBitmap((int)decoder.PixelWidth, (int)decoder.PixelHeight); bitmap.SetSource(imageStream); }); return bitmap; } } }
public async static Task <WriteableBitmap> ToBitmapImageAsync(this byte[] imageBytes, Tuple <int, int> downscale, InterpolationMode mode) { if (imageBytes == null) { return(null); } using (var imageStream = imageBytes.AsBuffer().AsStream()) using (IRandomAccessStream image = new RandomStream(imageStream)) { if (downscale != null && (downscale.Item1 > 0 || downscale.Item2 > 0)) { using (var downscaledImage = await image.ResizeImage((uint)downscale.Item1, (uint)downscale.Item2, mode).ConfigureAwait(false)) { BitmapDecoder decoder = await BitmapDecoder.CreateAsync(downscaledImage); downscaledImage.Seek(0); WriteableBitmap resizedBitmap = null; await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Low, () => { resizedBitmap = new WriteableBitmap((int)decoder.PixelWidth, (int)decoder.PixelHeight); using (var s = downscaledImage.AsStream()) { resizedBitmap.SetSource(s); } }); return(resizedBitmap); } } else { BitmapDecoder decoder = await BitmapDecoder.CreateAsync(image); image.Seek(0); WriteableBitmap bitmap = null; await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Low, () => { bitmap = new WriteableBitmap((int)decoder.PixelWidth, (int)decoder.PixelHeight); bitmap.SetSource(imageStream); }); return(bitmap); } } }
public async static Task <BitmapHolder> ToBitmapHolderAsync(this Stream imageStream, Tuple <int, int> downscale, bool useDipUnits, InterpolationMode mode, ImageInformation imageInformation = null) { if (imageStream == null) { return(null); } using (IRandomAccessStream image = new RandomStream(imageStream)) { if (downscale != null && (downscale.Item1 > 0 || downscale.Item2 > 0)) { using (var downscaledImage = await image.ResizeImage(downscale.Item1, downscale.Item2, mode, useDipUnits, imageInformation).ConfigureAwait(false)) { BitmapDecoder decoder = await BitmapDecoder.CreateAsync(downscaledImage); PixelDataProvider pixelDataProvider = await decoder.GetPixelDataAsync(); var bytes = pixelDataProvider.DetachPixelData(); int[] array = new int[decoder.PixelWidth * decoder.PixelHeight]; CopyPixels(bytes, array); return(new BitmapHolder(array, (int)decoder.PixelWidth, (int)decoder.PixelHeight)); } } else { BitmapDecoder decoder = await BitmapDecoder.CreateAsync(image); PixelDataProvider pixelDataProvider = await decoder.GetPixelDataAsync(); if (imageInformation != null) { imageInformation.SetCurrentSize((int)decoder.PixelWidth, (int)decoder.PixelHeight); imageInformation.SetOriginalSize((int)decoder.PixelWidth, (int)decoder.PixelHeight); } var bytes = pixelDataProvider.DetachPixelData(); int[] array = new int[decoder.PixelWidth * decoder.PixelHeight]; CopyPixels(bytes, array); return(new BitmapHolder(array, (int)decoder.PixelWidth, (int)decoder.PixelHeight)); } } }
public async static Task<WriteableBitmap> ToBitmapImageAsync(this byte[] imageBytes, Tuple<int, int> downscale, InterpolationMode mode) { if (imageBytes == null) return null; using (var imageStream = imageBytes.AsBuffer().AsStream()) using (IRandomAccessStream image = new RandomStream(imageStream)) { if (downscale != null && (downscale.Item1 > 0 || downscale.Item2 > 0)) { using (var downscaledImage = await image.ResizeImage((uint)downscale.Item1, (uint)downscale.Item2, mode).ConfigureAwait(false)) { BitmapDecoder decoder = await BitmapDecoder.CreateAsync(downscaledImage); downscaledImage.Seek(0); WriteableBitmap resizedBitmap = null; await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Low, () => { resizedBitmap = new WriteableBitmap((int)decoder.PixelWidth, (int)decoder.PixelHeight); using (var s = downscaledImage.AsStream()) { resizedBitmap.SetSource(s); } }); return resizedBitmap; } } else { BitmapDecoder decoder = await BitmapDecoder.CreateAsync(image); image.Seek(0); WriteableBitmap bitmap = null; await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Low, () => { bitmap = new WriteableBitmap((int)decoder.PixelWidth, (int)decoder.PixelHeight); bitmap.SetSource(imageStream); }); return bitmap; } } }
public async static Task <BitmapHolder> ToBitmapHolderAsync(this byte[] imageBytes, Tuple <int, int> downscale, InterpolationMode mode) { if (imageBytes == null) { return(null); } using (var imageStream = imageBytes.AsBuffer().AsStream()) using (IRandomAccessStream image = new RandomStream(imageStream)) { if (downscale != null && (downscale.Item1 > 0 || downscale.Item2 > 0)) { using (var downscaledImage = await image.ResizeImage((uint)downscale.Item1, (uint)downscale.Item2, mode).ConfigureAwait(false)) { BitmapDecoder decoder = await BitmapDecoder.CreateAsync(downscaledImage); PixelDataProvider pixelDataProvider = await decoder.GetPixelDataAsync(); var bytes = pixelDataProvider.DetachPixelData(); int[] array = new int[decoder.PixelWidth * decoder.PixelHeight]; CopyPixels(bytes, array); return(new BitmapHolder(array, (int)decoder.PixelWidth, (int)decoder.PixelHeight)); } } else { BitmapDecoder decoder = await BitmapDecoder.CreateAsync(image); PixelDataProvider pixelDataProvider = await decoder.GetPixelDataAsync(); var bytes = pixelDataProvider.DetachPixelData(); int[] array = new int[decoder.PixelWidth * decoder.PixelHeight]; CopyPixels(bytes, array); return(new BitmapHolder(array, (int)decoder.PixelWidth, (int)decoder.PixelHeight)); } } }
public async static Task<BitmapHolder> ToBitmapHolderAsync(this Stream imageStream, Tuple<int, int> downscale, bool useDipUnits, InterpolationMode mode) { if (imageStream == null) return null; using (IRandomAccessStream image = new RandomStream(imageStream)) { if (downscale != null && (downscale.Item1 > 0 || downscale.Item2 > 0)) { using (var downscaledImage = await image.ResizeImage(downscale.Item1, downscale.Item2, mode, useDipUnits).ConfigureAwait(false)) { BitmapDecoder decoder = await BitmapDecoder.CreateAsync(downscaledImage); PixelDataProvider pixelDataProvider = await decoder.GetPixelDataAsync(); var bytes = pixelDataProvider.DetachPixelData(); int[] array = new int[decoder.PixelWidth * decoder.PixelHeight]; CopyPixels(bytes, array); return new BitmapHolder(array, (int)decoder.PixelWidth, (int)decoder.PixelHeight); } } else { BitmapDecoder decoder = await BitmapDecoder.CreateAsync(image); PixelDataProvider pixelDataProvider = await decoder.GetPixelDataAsync(); var bytes = pixelDataProvider.DetachPixelData(); int[] array = new int[decoder.PixelWidth * decoder.PixelHeight]; CopyPixels(bytes, array); return new BitmapHolder(array, (int)decoder.PixelWidth, (int)decoder.PixelHeight); } } }