public void MouseLeftButtonDownAction(object sender, MouseButtonEventArgs e) { ToClientV.MySelf.Visibility = System.Windows.Visibility.Collapsed; UIElement rootUI = App.Current.RootVisual; WriteableBitmap wb = new WriteableBitmap(rootUI, null); int width = wb.PixelWidth; int height = wb.PixelHeight; int bands = 3; byte[][,] raster = new byte[bands][,]; for (int i = 0; i < bands; i++) { raster[i] = new byte[width, height]; } for (int row = 0; row < height; row++) { for (int column = 0; column < width; column++) { int pixel = wb.Pixels[width * row + column]; raster[0][column, row] = (byte)(pixel >> 16); raster[1][column, row] = (byte)(pixel >> 8); raster[2][column, row] = (byte)pixel; } } FluxJpeg.Core.ColorModel model = new FluxJpeg.Core.ColorModel { colorspace = FluxJpeg.Core.ColorSpace.RGB }; FluxJpeg.Core.Image img = new FluxJpeg.Core.Image(model, raster); MemoryStream stream = new MemoryStream(); FluxJpeg.Core.Encoder.JpegEncoder encoder = new FluxJpeg.Core.Encoder.JpegEncoder(img, 100, stream); encoder.Encode(); stream.Seek(0, SeekOrigin.Begin); byte[] binaryData = stream.ToArray(); Command.Execute(binaryData); ToClientV.MySelf.Visibility = System.Windows.Visibility.Visible; }
public Image(FluxJpeg.Core.ColorModel cm, byte[][,] raster) { this.width = raster[0].GetLength(0); this.height = raster[0].GetLength(1); this._cm = cm; this._raster = raster; }
private void SaveToFile(WriteableBitmap bitmap, Stream fs) { int width = bitmap.PixelWidth; int height = bitmap.PixelHeight; int bands = 3; byte[][,] raster = new byte[bands][, ]; for (int i = 0; i < bands; i++) { raster[i] = new byte[width, height]; } for (int row = 0; row < height; row++) { for (int column = 0; column < width; column++) { int pixel = bitmap.Pixels[width * row + column]; raster[0][column, row] = (byte)(pixel >> 16); raster[1][column, row] = (byte)(pixel >> 8); raster[2][column, row] = (byte)pixel; } } FluxJpeg.Core.ColorModel model = new FluxJpeg.Core.ColorModel { colorspace = FluxJpeg.Core.ColorSpace.RGB }; FluxJpeg.Core.Image img = new FluxJpeg.Core.Image(model, raster); //Encode the Image as a JPEG MemoryStream stream = new MemoryStream(); FluxJpeg.Core.Encoder.JpegEncoder encoder = new FluxJpeg.Core.Encoder.JpegEncoder(img, 100, stream); encoder.Encode(); //Back to the start stream.Seek(0, SeekOrigin.Begin); //Get teh Bytes and write them to the stream byte[] binaryData = new byte[stream.Length]; long bytesRead = stream.Read(binaryData, 0, (int)stream.Length); fs.Write(binaryData, 0, binaryData.Length); }
public void MouseLeftButtonUpAction(object sender, MouseButtonEventArgs e) { if (!ended) { return; } isPressed = false; WriteableBitmap twb = new WriteableBitmap(ShotGrid, null); int width = twb.PixelWidth; int height = twb.PixelHeight; int bands = 3; byte[][,] raster = new byte[bands][,]; for (int i = 0; i < bands; i++) { raster[i] = new byte[width, height]; } for (int row = 0; row < height; row++) { for (int column = 0; column < width; column++) { int pixel = twb.Pixels[width*row+column]; raster[0][column, row] = (byte)(pixel >> 16); raster[1][column, row] = (byte)(pixel >> 8); raster[2][column, row] = (byte)pixel; } } FluxJpeg.Core.ColorModel model = new FluxJpeg.Core.ColorModel { colorspace = FluxJpeg.Core.ColorSpace.RGB }; FluxJpeg.Core.Image img = new FluxJpeg.Core.Image(model, raster); MemoryStream stream = new MemoryStream(); FluxJpeg.Core.Encoder.JpegEncoder encoder = new FluxJpeg.Core.Encoder.JpegEncoder(img, 100, stream); encoder.Encode(); stream.Seek(0, SeekOrigin.Begin); byte[] binaryData = stream.ToArray(); save.Execute(binaryData); p.Children.Remove(this); ended = false; }