C#将图片批量转化为Base64代码
一. 作用
图片通过转化为 Base64 可以用在前端 CSS 的 Url 中。将图片进行内嵌,可以提高前端加载速度,同时也可以摆脱 HTML 页面和图片的依赖。
二. 核心代码
代码如下:
/// <summary> /// 将图片与Base64代码互相转换 /// </summary> public static class ImageToBase64Helper { /// <summary> /// 将图片转化为Base64代码 /// </summary> /// <param name="absolutePath">图片文件的绝对路径地址</param> /// <returns>Base64代码</returns> public static string Image2Base64(string absolutePath) { return InnerImage2Base64(absolutePath); } /// <summary> /// 将图片转化为CSS格式Base64代码 /// </summary> /// <param name="absolutePath">图片文件的绝对路径地址</param> /// <returns>CSS格式Base64代码</returns> public static string Image2CssBase64(string absolutePath) { return InnerImage2Base64(absolutePath, Base64FormatingEnum.UseInCss); } /// <summary> /// 将图片转化为Javascript变量格式Base64代码 /// </summary> /// <param name="absolutePath">图片文件的绝对路径地址</param> /// <param name="variableNam">变量名称</param> /// <returns>Javascript变量格式Base64代码</returns> public static string Image2JsBase64(string absolutePath, string variableName) { return InnerImage2Base64(absolutePath, Base64FormatingEnum.UseInJavascript, variableName); } /// <summary> /// 将图片转化为用户指定格式Base64代码 /// </summary> /// <param name="absolutePath">图片文件的绝对路径地址</param> /// <param name="formatingStr">变量名称</param> /// <param name="variableName">用户指定格式</param> /// <returns>用户指定格式Base64代码</returns> public static string Image2CustomBase64(string absolutePath, string variableName, string formatingStr) { return InnerImage2Base64(absolutePath, Base64FormatingEnum.Custom, variableName, formatingStr); } /// <summary> /// 将Base64代码转化为Bitmap类型的图片对象 /// </summary> /// <param name="base64Code">将Base64代码</param> /// <returns>Bitmap类型的图片对象</returns> public static Bitmap Base64ToBitmap(string base64Code) { byte[] buffer = null; try { buffer = Convert.FromBase64String(base64Code); } catch { return null; } try { using (MemoryStream ms = new MemoryStream(buffer)) { return new Bitmap(ms); } } catch { return null; } } /// <summary> /// 将图片转化为Base64代码的内核处理函数 /// </summary> /// <param name="absolutePath">图片文件的绝对路径地址</param> /// <param name="type">处理类型</param> /// <param name="variableName">变量名称</param> /// <returns>Base64代码</returns> private static string InnerImage2Base64(string absolutePath, Base64FormatingEnum type = Base64FormatingEnum.None, string variableName = "", string formatingStr = "") { if (!File.Exists(absolutePath)) { throw new FileNotFoundException("指定路径的文件不存在!"); } try { byte[] buffer = null; using (FileStream fileStream = new FileStream(absolutePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { buffer = new byte[fileStream.Length]; fileStream.Read(buffer, 0, (int)fileStream.Length); } string base64Code = Convert.ToBase64String(buffer); switch (type) { case Base64FormatingEnum.None: { return base64Code; } case Base64FormatingEnum.UseInCss: { return "data:image/png;base64," + base64Code; } case Base64FormatingEnum.UseInJavascript: { return string.Format("var {0}=\"{1}\";", variableName, base64Code); } case Base64FormatingEnum.Custom: { return string.Format(formatingStr, variableName, base64Code); } } } catch { throw; } return string.Empty; } /// <summary> /// 内部处理方式枚举 /// </summary> private enum Base64FormatingEnum { /// <summary> /// 不格式化 /// </summary> None = 0, /// <summary> /// CSS路径格式化 /// </summary> UseInCss = 1, /// <summary> /// Js变量格式化 /// </summary> UseInJavascript = 2, /// <summary> /// 自定义 /// </summary> Custom=3 } }
三. 批量处理工程Demo
Demo图片:


浙公网安备 33010602011771号