Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
 public void SaveToJPEG(WriteableBitmap bitmap, Stream stream)
 {
 #if SILVERLIGHT
   FluxJpeg.Core.Encoder.JpegEncoder encoder = new FluxJpeg.Core.Encoder.JpegEncoder(WriteableBitmapToFJCoreImage(bitmap), 100, stream);
   encoder.Encode();
 #else
       JpegBitmapEncoder encoder = new JpegBitmapEncoder();
       encoder.Frames.Add(BitmapFrame.Create(bitmap));
       encoder.Save(stream);
 #endif
 }
Ejemplo n.º 3
0
        // as found here: http://blog.blueboxes.co.uk/2009/07/21/rendering-xaml-to-a-jpeg-using-silverlight-3/
        // also see attribution to SO post here: http://stackoverflow.com/questions/1139200/using-fjcore-to-encode-silverlight-writeablebitmap
        private static void SaveBitmapToJpeg(WriteableBitmap bitmap, Stream fs)
        {
            //Convert the Image to pass into FJCore
            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;
                }
            }

            ColorModel model = new ColorModel {
                colorspace = 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();

            //Move back to the start of the stream
            stream.Seek(0, SeekOrigin.Begin);

            //Get the 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);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Encode raster information to MemoryStream
        /// </summary>
        /// <param name="raster">Raster information (Array of bytes)</param>
        /// <param name="colorSpace">ColorSpace used</param>
        /// <returns>MemoryStream</returns>
        public static MemoryStream EncodeRasterInformationToStream(byte[][,] raster, ColorSpace colorSpace)
        {
            ColorModel model = new ColorModel {
                colorspace = 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);

            return(stream);
        }
Ejemplo n.º 5
0
        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;
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Encode raster information to MemoryStream
        /// </summary>
        /// <param name="raster">Raster information (Array of bytes)</param>
        /// <param name="colorSpace">ColorSpace used</param>
        /// <returns>MemoryStream</returns>
        public static MemoryStream EncodeRasterInformationToStream(byte[][,] raster, ColorSpace colorSpace)
        {
            ColorModel model = new ColorModel { colorspace = 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);

            return stream;
        }