public static class Base64Helper
{
/// <summary>
/// base64字符保存图片到本
/// </summary>
/// <param name="filePath">保存的图片完整路径</param>
/// <param name="base64String">base64字符串</param>
public static void Base64SaveImage(string filePath, string base64String)
{
try
{
//如果base64是通过http传过来的,要注意其中的%、,、空格等转换,C#规定base64的长度必须是4的倍数,有个别语言是2的倍数,补上==。
base64String = base64String.Trim().Replace("%", "").Replace(",", "").Replace(" ", "+");
if (base64String.Length % != )
{
base64String += "==";
}
byte[] arr2 = Convert.FromBase64String(base64String);
using (MemoryStream ms2 = new MemoryStream(arr2))
{
System.Drawing.Bitmap bmp2 = new System.Drawing.Bitmap(ms2);
bmp2.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);
bmp2.Dispose();
}
}
catch (Exception ex)
{
LogHelper.WriteLog("图片保存异常:" + ex.ToString());
} } public static string ImgToBase64String(string Imagefilename)
{
try
{
Bitmap bmp = new Bitmap(Imagefilename); MemoryStream ms = new MemoryStream();
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] arr = new byte[ms.Length];
ms.Position = ;
ms.Read(arr, , (int)ms.Length);
ms.Close();
return Convert.ToBase64String(arr);
}
catch (Exception ex)
{
LogHelper.WriteLog("图片读取异常:" + ex.ToString());
return null;
}
} public static string ImageToBase64(string path)
{
byte[] bytes = GetPictureData(path);
string base64 = Convert.ToBase64String(bytes);
return base64;
} public static Bitmap Base64ToImage(string base64)
{
byte[] arr = Convert.FromBase64String(base64);
MemoryStream ms = new MemoryStream(arr);
Bitmap bmp = new Bitmap(ms);
ms.Close();
return bmp;
} public static byte[] GetPictureData(string imagePath)
{
FileStream fs = new FileStream(imagePath, FileMode.Open);
byte[] byData = new byte[fs.Length];
fs.Read(byData, , byData.Length);
fs.Close();
return byData;
}
}

最新文章

  1. 如何扩展 Visual Studio 编辑器
  2. 一篇笔记带你快速掌握面向对象的Javascript(纯手打)
  3. IT男的”幸福”生活&quot;系列暂停更新通知
  4. node.js render模板
  5. [转载]MongoDB学习(二):数据类型和基本概念
  6. MySqlQueryList
  7. Android:基于Eclipse编译调试系统级应用源代码
  8. iframe跨域通讯
  9. JS中常见排序算法详解
  10. CentOS下安装node
  11. 结合实例分析Android MVP的实现
  12. 选择排序&lt;C#&gt;
  13. VMVare 虚拟机使用桥接模式
  14. git pull总是要输入账号和密码
  15. Android中使用隐藏API(大量图解)
  16. bzoj1642 / P2889 [USACO07NOV]挤奶的时间Milking Time
  17. 【转】总结C++中取成员函数地址的几种方法
  18. SQL Server附加数据库拒绝访问解决方法汇总
  19. c++ const static
  20. 第2课 android机器人的翻页相册

热门文章

  1. POJ 1163
  2. java泛型---通配符,泛型嵌套
  3. 数字和表达式(python)
  4. 关于注解Annotation第一篇
  5. java学习-struts基础(一)
  6. idea 错误: -source 1.6 中不支持 diamond 运算符的解决办法
  7. redis实战笔记(6)-第6章 使用 Redis构建应用程序组件
  8. unity之定制脚本模板
  9. 【WePY小程序框架实战一】-创建项目
  10. Json.Net 反序列化成匿名对象