首页 > 代码库 > BitmapSource ConvertTo Bitmap
BitmapSource ConvertTo Bitmap
偶遇需要把 BitmapSource 转成 Bitmap。 。。
using System;using System.Drawing;using System.Drawing.Imaging;using System.Windows;using System.Windows.Media.Imaging;namespace Jisons{ public static class BitmapSourceHelper { public static Bitmap ConvertToBitmap(this BitmapSource bs) { return ConvertToBitmap(bs, 0, 0, bs.PixelWidth, bs.PixelHeight); } public static Bitmap ConvertToBitmap(this BitmapSource bs, int x, int y, int width, int height) { var bmp = new Bitmap(width, height, PixelFormat.Format32bppPArgb); var bmpdata = http://www.mamicode.com/bmp.LockBits(new Rectangle(System.Drawing.Point.Empty, bmp.Size), ImageLockMode.WriteOnly, PixelFormat.Format32bppPArgb); bs.CopyPixels(new Int32Rect(x, y, width, height), bmpdata.Scan0, bmpdata.Height * bmpdata.Stride, bmpdata.Stride); bmp.UnlockBits(bmpdata); return bmp; } public static byte[] ConvertToBytes(this BitmapSource bs) { return ConvertToBytes(bs, 0, 0, (int)bs.Width, (int)bs.Height); } public static byte[] ConvertToBytes(this BitmapSource bs, int x, int y, int width, int height) { var rect = new Int32Rect(x, y, width, height); var stride = bs.Format.BitsPerPixel * rect.Width / 8; byte[] data = http://www.mamicode.com/new byte[rect.Height * stride]; bs.CopyPixels(rect, data, stride, 0); return data; } public static BitmapSource ClipBitmapSource(this BitmapSource bs, int x, int y, int width, int height) { var rect = new Int32Rect(x, y, width, height); var stride = bs.Format.BitsPerPixel * rect.Width / 8; byte[] data = http://www.mamicode.com/new byte[rect.Height * stride]; bs.CopyPixels(rect, data, stride, 0); return BitmapSource.Create(width, height, 0, 0, System.Windows.Media.PixelFormats.Bgra32, null, data, stride); } public static Bitmap ConvertToBitmap(this byte[] data, int width, int height) { var bmp = new Bitmap(width, height); for (int w = 0; w < width; w++) { for (int h = 0; h < height; h++) { int index = h * width * 4 + w * 4; int B = data[index]; int G = data[index + 1]; int R = data[index + 2]; int A = data[index + 3]; bmp.SetPixel(w, h, System.Drawing.Color.FromArgb(A, R, G, B)); } } return bmp; } public static BitmapSource ConvertToBitmapSource(this Bitmap source) { return System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(source.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); } }}
BitmapSource ConvertTo Bitmap
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。