使用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/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系