C#-Img与Base64转化帮助类

Base64ImgHelper:

/**
*┌──────────────────────────────────────────────────────────────┐
*│ 描    述:Img与Base64转化的工具类                                                   
*│ 作    者:执笔小白                                              
*│ 版    本:2.0                                       
*│ 创建时间:2020-6-13 15:40:56                            
*└──────────────────────────────────────────────────────────────┘
*┌──────────────────────────────────────────────────────────────┐
*│ 命名空间: ZhibiXiaobai.Uril.ImgHelper                               
*│ 类    名:Base64ImgHelper                                     
*└──────────────────────────────────────────────────────────────┘
*/
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;

namespace ZhibiXiaobai.Uril.ImgHelper
{
    /// <summary>
    /// Img与Base64转化的帮助类
    /// </summary>
    public class Base64ImgHelper
    {
        /// <summary>
        /// Img转Base64的方法
        /// </summary>
        /// <param name="bitmap">bmp类型的图片数据</param>
        /// <param name="imgFromat">Img原来的格式</param>
        /// <returns></returns>
        public static string ImgToBase64Str(Bitmap bitmap, ImageFormat imgFromat)
        {
            try
            {
                MemoryStream ms = new MemoryStream();
                bitmap.Save(ms, imgFromat);
                byte[] arr = new byte[ms.Length];
                ms.Position = 0;
                ms.Read(arr, 0, (int)ms.Length);
                ms.Close();

                return Convert.ToBase64String(arr);
            }
            catch
            {
                return null;
            }
        }

        /// <summary>
        /// Base64转Img的方法
        /// img.Save("ImgName.png", ImageFormat.Png);
        /// </summary>
        /// <param name="base64Str">图片源的Base64字节流</param>
        /// <returns></returns>
        public static System.Drawing.Image Base64StrToImg(string base64Str)
        {
            try
            {
                byte[] arr = Convert.FromBase64String(base64Str);
                MemoryStream ms = new MemoryStream(arr);
                return System.Drawing.Image.FromStream(ms);

            }
            catch
            {
                return null;
            }
        }

        #region 扩展
        /// <summary>
        /// 根据图片名字的后缀返回图片的System.Drawing.Imaging.ImageFormat格式
        /// </summary>
        /// <param name="imgName">带后缀的图片名字</param>
        /// <returns></returns>
        public static System.Drawing.Imaging.ImageFormat GetImageFormat(string imgName)
        {
            string[] files = imgName.Split('.');
            imgName = files[files.Length-1].Trim().ToLower();  // 获取后缀
            switch (imgName)
            {
                case "png":
                    return System.Drawing.Imaging.ImageFormat.Png;
                case "jpg":
                    return System.Drawing.Imaging.ImageFormat.Jpeg;
                case "jpeg":
                    return System.Drawing.Imaging.ImageFormat.Jpeg;
                case "gif":
                    return System.Drawing.Imaging.ImageFormat.Gif;
                case "bmp":
                    return System.Drawing.Imaging.ImageFormat.Bmp;
                case "icon":
                    return System.Drawing.Imaging.ImageFormat.Icon;
                case "memoryBmp":  // 不是文件类型
                    return System.Drawing.Imaging.ImageFormat.MemoryBmp;
                case "tiff":
                    return System.Drawing.Imaging.ImageFormat.Tiff;
                case "exif":
                    return System.Drawing.Imaging.ImageFormat.Exif;
                case "wmf":
                    return System.Drawing.Imaging.ImageFormat.Wmf;
                case "emf":
                    return System.Drawing.Imaging.ImageFormat.Emf;
                default:  // 默认返回Jpeg
                    return System.Drawing.Imaging.ImageFormat.Jpeg;
            }
        }
        #endregion
    }
}
posted @ 2022-02-15 16:55  ꧁执笔小白꧂  阅读(315)  评论(0)    收藏  举报