Exemple #1
0
        public void RecalcCanvas(System.Drawing.Imaging.PixelFormat format)
        {
            // TODO get format by url ending / mime type?
            _format = UtilDrawing.ConvertPixelFormat(format);

            // Calculate the number of bytes per pixel.
            _bytesPerPixel = (_format.BitsPerPixel + 7) / 8;

            // Stride is bytes per pixel times the number of pixels.
            // Stride is the byte width of a single rectangle row.
            _stride = _width * _bytesPerPixel;
        }
Exemple #2
0
        public void WriteOnlinePicture()
        {
            PrepareCanvas();

            //Uri uri = new Uri(TextBoxURL.Text);
            //BitmapImage bitmapImage = new BitmapImage();
            //bitmapImage.CreateOptions = BitmapCreateOptions.None;
            ////bitmapImage.ImageOpened += ImageOpened;
            //bitmapImage.UriSource = uri;
            //ImageTest.Source = new WriteableBitmap(bitmapImage);

            try
            {
                WebClient client = new WebClient();
                Bitmap    bitmap;

                using (Stream BitmapStream = client.OpenRead(TextBoxURL.Text))
                {
                    Image img = Image.FromStream(BitmapStream);
                    img    = img.CopyWithTransparency();
                    bitmap = new Bitmap(img);
                }

                //Stream stream = client.OpenRead(TextBoxURL.Text);
                //var bitmap = new Bitmap(stream);
                //stream.Flush();
                //stream.Close();

                //var fileName = tmpPath + "filename.jpeg";
                //bitmap.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg);
                //Console.WriteLine("Image written as " + fileName);

                var baseLayer = UtilDrawing.CreateBitmapSourceFromBitmap(bitmap, System.Drawing.Imaging.ImageFormat.Bmp);

                //var format = System.Drawing.Imaging.PixelFormat.Format32bppArgb;
                var format = System.Drawing.Imaging.PixelFormat.Format32bppRgb;
                //var format = baseLayer.Format;
                var bpp    = UtilDrawing.GetBytesPerPixel(format);
                var stride = UtilDrawing.GetStride(bpp, bitmap.Width);
                var pixels = new byte[UtilDrawing.GetSize(stride, bitmap.Height)];

                baseLayer.CopyPixels(pixels, stride, 0);

                _writablebitmap.WritePixels(new Int32Rect(0, 0, baseLayer.PixelWidth, baseLayer.PixelHeight), pixels, stride, 0);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }