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; }
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); } }