public static ImageRaster2D <RangeType> ConvertWriteableBitmapToImageRaster2D <RangeType>(WriteableBitmap writeable_bitmap, IFunction <int, RangeType> converter) { int width = writeable_bitmap.PixelWidth; int height = writeable_bitmap.PixelHeight; System.Windows.Media.PixelFormat format = System.Windows.Media.PixelFormats.Bgr24; int stride = (format.BitsPerPixel / 8) * width; int bytes = stride * height; int[] pixels = new int[width * height]; writeable_bitmap.CopyPixels(new Int32Rect(0, 0, width, height), pixels, bytes, stride); return(new ImageRaster2D <RangeType>(width, height, ToolsMathFunction.Convert(pixels, converter), false)); }
public static WriteableBitmap ConvertImageRaster2DToWriteableBitmap <RangeType>(ImageRaster2D <RangeType> image_raster_base, IFunction <RangeType, int> converter) { int width = image_raster_base.Raster.Size0; int height = image_raster_base.Raster.Size1; System.Windows.Media.PixelFormat format = System.Windows.Media.PixelFormats.Bgr24; WriteableBitmap result = new WriteableBitmap(width, height, 96, 96, System.Windows.Media.PixelFormats.Bgr24, null); int[] pixels = ToolsMathFunction.Convert(image_raster_base.GetElementValues(false), converter); int stride = (format.BitsPerPixel / 8) * width; int bytes = stride * height; //TODO convert result.Lock(); result.WritePixels(new Int32Rect(0, 0, width, height), pixels, bytes, stride); result.Unlock(); return(result); }