base64字符串转文件,以及ngImgCrop裁剪图片并上…
2018-06-23 23:38:28来源:未知 阅读 ()
base64字符串是包含文件格式的文件字符串,例如:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAgAElEQVR4Xsy9+……
根据base64字符串可以转化成真实的文件。思路是,首先将base64字符串读取城字节数组;然后将字节数组读入到字节流(内存流);其次将base64字符串开头部分包含的文件格式提取出来,得到文件类型并转换成相应后缀名;最后,根据字节流和文件类型,即可转化成相应的文件,并保存到物理磁盘。
特别是最近玩AngularJS时候,用到图片上传,裁剪图片保存功能,需要用到ngImgCrop裁剪图片控件。它就是将图片裁剪后保存成base64字符串结果的。
示例:base64编码的文本转为图片
/// <summary>
/// base64编码的文本转为图片
/// </summary>
/// <param name="base64"></param>
/// <returns></returns>
private static Image Base64StringToImage(string base64)
{
byte[] bytes = Convert.FromBase64String(base64);
using (MemoryStream ms = new MemoryStream(bytes))
{
Bitmap bmp = new Bitmap(ms);
return bmp;
}
}
示例:获取base64字符串开头部分包含的文件格式
var m = new Regex(@"(?<=data\:)[\w\/_\.]+(?=\;)", RegexOptions.IgnoreCase).Match(byteStr);
string ContentType = null != m ? m.Value : "image/png";
示例:获取文件大小
/// <summary>
/// 获取文件/文件夹大小(字节)
/// </summary>
/// <param name="filePath">路径</param>
/// <returns></returns>
private static long FileSize(string filePath)
{
long temp = 0;
//路径是否是文件
if (File.Exists(filePath) == false)
{
//文件目录
string[] entries = Directory.GetFileSystemEntries(filePath);
foreach (string item in entries)
{
//遍历文件目录内的所有子文件目录,子文件
temp += FileSize(item);
}
}
else
{
FileInfo fileInfo = new FileInfo(filePath);
return fileInfo.Length; //获取真实文件的大小(字节)
}
return temp;
}
全部代码:
1 public class FileUploadResultModel 2 { 3 public Guid FileID { get; set; } 4 public long FileSize { get; set; } 5 } 6 7 8 public static class Base64FileHandle 9 { 10 /// <summary> 11 /// base64编码的文本转为图片 12 /// </summary> 13 /// <param name="base64"></param> 14 /// <returns></returns> 15 private static Image Base64StringToImage(string base64) 16 { 17 byte[] bytes = Convert.FromBase64String(base64); 18 using (MemoryStream ms = new MemoryStream(bytes)) 19 { 20 Bitmap bmp = new Bitmap(ms); 21 return bmp; 22 } 23 } 24 /// <summary> 25 /// 获取文件/文件夹大小(字节) 26 /// </summary> 27 /// <param name="filePath">路径</param> 28 /// <returns></returns> 29 private static long FileSize(string filePath) 30 { 31 long temp = 0; 32 if (File.Exists(filePath) == false) 33 { 34 string[] entries = Directory.GetFileSystemEntries(filePath); 35 foreach (string item in entries) 36 { 37 temp += FileSize(item); 38 } 39 } 40 else 41 { 42 FileInfo fileInfo = new FileInfo(filePath); 43 return fileInfo.Length; 44 } 45 return temp; 46 } 47 private static string SuffixName(string ContentType) 48 { 49 switch (ContentType.Trim().ToLower()) 50 { 51 case "image/jpg": 52 case "image/jpeg": 53 return ".jpg"; 54 55 case "image/gif": 56 return ".gif"; 57 case "image/bmp": 58 return ".bmp"; 59 case "image/png": 60 return ".png"; 61 default: 62 return ""; 63 } 64 } 65 66 /// <summary> 67 /// 创建圈子 68 /// </summary> 69 /// <param name="community"></param> 70 /// <returns></returns> 71 public static ResponseModel<FileUploadResultModel> ngImgCropHandle(string base64) 72 { 73 var response = new ResponseModel<FileUploadResultModel>() { IsLogin = true }; 74 75 string byteStr = base64.Trim();//data:image/png;base64, 76 int delLength = byteStr.IndexOf(',') + 1; 77 string str = byteStr.Substring(delLength, byteStr.Length - delLength); 78 Image returnImage = Base64StringToImage(str); 79 80 var m = new Regex(@"(?<=data\:)[\w\/_\.]+(?=\;)", RegexOptions.IgnoreCase).Match(byteStr); 81 string ContentType = null != m ? m.Value : "image/png"; 82 83 Guid filename = Guid.NewGuid(); 84 string filepath = @"D:\wwwroot\" + filename + SuffixName(ContentType); 85 returnImage.Save(filepath); 86 87 response.Data = new FileUploadResultModel() { FileID = filename, FileSize = FileSize(filepath) }; 88 response.Success = true; 89 response.Message = "ok"; 90 return response; 91 } 92 93 94 }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:C#图解教程-方法参数笔记(上)
下一篇:sql存储过程
- 根据分辨率调用css文件的方法 2020-03-19
- ?javascript如何控制上传文件的大小 2020-03-19
- 详解Webstorm 新建.vue文件支持高亮vue语法和es6语法 2020-02-07
- 分享Javascript6中字符串的四个新用法 2019-12-18
- jquery模拟LCD 时钟的html文件源代码 2019-12-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash