private static byte[] GetPixels(RenderTargetBitmap rtb, int width, int height)
        {
            int num = width * 4;
            FormatConvertedBitmap formatConvertedBitmap = new FormatConvertedBitmap();

            formatConvertedBitmap.BeginInit();
            formatConvertedBitmap.Source            = rtb;
            formatConvertedBitmap.DestinationFormat = PixelFormats.Bgra32;
            formatConvertedBitmap.EndInit();
            byte[] array = new byte[num * height];
            formatConvertedBitmap.CriticalCopyPixels(Int32Rect.Empty, array, num, 0);
            return(array);
        }
Esempio n. 2
0
        /// <summary>
        /// Get bitmap pixel data in Bgra32 format from a custom Drawing.
        /// </summary>
        /// <param name="rtb">A bitmap</param>
        /// <param name="width">Bitmap width</param>
        /// <param name="height">Bitmap height</param>
        /// <returns></returns>
        private static byte[] GetPixels(RenderTargetBitmap rtb, int width, int height)
        {
            int strideColorBitmap = width * 4 /* 32 BitsPerPixel */;

            // Convert the bitmap from Pbgra32 to Bgra32
            FormatConvertedBitmap converter = new FormatConvertedBitmap();

            converter.BeginInit();
            converter.Source            = rtb;
            converter.DestinationFormat = PixelFormats.Bgra32;
            converter.EndInit();

            byte[] pixels = new byte[strideColorBitmap * height];

            // Call the internal method which skips the MediaPermission Demand
            converter.CriticalCopyPixels(Int32Rect.Empty, pixels, strideColorBitmap, 0);

            return(pixels);
        }
Esempio n. 3
0
        private byte[] GetDecodedPixels(Int32Rect bounds)
        {
            Debug.Assert(
                (bounds.X >= 0) &&
                (bounds.Y >= 0) &&
                ((bounds.X + bounds.Width) <= _pixelWidth) &&
                ((bounds.Y + bounds.Height) <= _pixelHeight)
                );

            int stride = bounds.Width * 4;

            byte[] pixels = new Byte[stride * bounds.Height];

            FormatConvertedBitmap converter = new FormatConvertedBitmap();

            converter.BeginInit();
            converter.Source            = _image;
            converter.DestinationFormat = PixelFormats.Pbgra32;
            converter.EndInit();

            converter.CriticalCopyPixels(bounds, pixels, stride, 0);

            return(pixels);
        }