Wpf Bitmap(Image)Base64,Url,文件Path,Stream转BitmapSource(ImageSource),无需外部dll

发布时间 2023-12-21 15:45:27作者: WebEnh

直接上代码

using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using System.Windows.Media.Imaging;
 
namespace CommonUtils
{
    /// <summary>
    /// Windows图片处理
    /// </summary>
    public static class WindowsImage
    {
        #region BitmapSource
        /// <summary>
        /// 获取图片源
        /// </summary>
        public static BitmapSource GetSource(Stream stream)
        {
            //已验证stream不可关闭
            return BitmapFrame.Create(stream);
        }
 
        /// <summary>
        /// 获取图片源
        /// </summary>
        public static BitmapSource GetSource(Image image)
        {
            return GetSource(image.Stream());
        }
 
        /// <summary>
        /// 获取图片源
        /// </summary>
        public static BitmapSource GetSource(byte[] bytes)
        {
            return GetSource(bytes.ToStream());
        }
 
        /// <summary>
        /// 获取图片源
        /// </summary>
        public static BitmapSource GetSourceFromBase64(string base64)
        {
            return GetSource(base64.Base64Decode());
        }
 
        /// <summary>
        /// 获取图片源
        /// </summary>
        public static BitmapSource GetSourceFromUrlOrPath(string urlOrPath)
        {
            return new BitmapImage(new Uri(urlOrPath));
        }
        #endregion
 
        /// <summary>
        /// 获取截屏
        /// </summary>
        public static Bitmap GetScreenShoot()
        {
            Bitmap bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
            Graphics graphics = Graphics.FromImage(bitmap);
            graphics.CopyFromScreen(new Point(0, 0), new Point(0, 0), bitmap.Size);
            graphics.Dispose();
            return bitmap;
        }
    }
}