使用WPF过程中,有些时候需要调用系统的一些接口,必须传入GDI+所支持的图片类型,也是winform支持的图片类型,这个时候我们就需要做一个转换了。
请看主要代码,图片格式看情况自行设定。通常使用jpg比较好,省空间;如果支持透明就用png吧。
public static Bitmap BitmapSourceToBitmap(BitmapSource source)
{
if (source == null) return null;
using var stream = new MemoryStream();
var jpegBitmapEncoder = new JpegBitmapEncoder();
jpegBitmapEncoder.Frames.Add(BitmapFrame.Create(source));
jpegBitmapEncoder.Save(stream);
var bmp = new Bitmap(stream);
return bmp;
}
public static BitmapSource BitmapToBitmapSource(Bitmap bitmap)
{
if (bitmap == null) return null;
var ms = new MemoryStream();
bitmap.Save(ms, ImageFormat.Png);
var image = new BitmapImage();
image.BeginInit();
//有些格式你会发现打不开,因为像素有丢失,没关系加上这个配置即可。
//image.CreateOptions=BitmapCreateOptions.IgnoreColorProfile;
image.StreamSource = ms;
image.EndInit();
return image;
}
本文会经常更新,请阅读原文: https://huchengv5.gitee.io//post/Bitmap%E4%B8%8EBitmapSource%E7%9A%84%E4%BA%92%E8%BD%AC.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名胡承(包含链接: https://huchengv5.gitee.io/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。