c# 中base64字符串和图片的相互转换
c#base64字符串转图片用到了bitmap类,封装 GDI+ 位图,此位图由图形图像及其特性的像素数据组成。 Bitmap 是用于处理由像素数据定义的图像的对象。
具体bitmap类是什么可以自己百度查询,这里就不多介绍了。
#region base64转图片
/// <summary>
/// 图片上传 Base64解码
/// </summary>
/// <param name="dataURL">Base64数据</param>
/// <param name="imgName">图片名字</param>
/// <returns>返回一个相对路径</returns>
public string decodeBase64ToImage(string dataURL,string imgName)
{ string filename = "";//声明一个string类型的相对路径 String base64 = dataURL.Substring(dataURL.IndexOf(",") + 1); //将‘,’以前的多余字符串删除
System.Drawing.Bitmap bitmap = null;//定义一个Bitmap对象,接收转换完成的图片 try//会有异常抛出,try,catch一下
{ byte[] arr = Convert.FromBase64String(base64);//将纯净资源Base64转换成等效的8位无符号整形数组 System.IO.MemoryStream ms = new System.IO.MemoryStream(arr);//转换成无法调整大小的MemoryStream对象
bitmap = new System.Drawing.Bitmap(ms);//将MemoryStream对象转换成Bitmap对象 filename ="Knowledge_" + imgName + ".jpg";//所要保存的相对路径及名字
string url =HttpRuntime.AppDomainAppPath.ToString();
string tmpRootDir = System.Web.HttpContext.Current.Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString()); //获取程序根目录
string imagesurl2 = tmpRootDir + filename; //转换成绝对路径
bitmap.Save(imagesurl2, System.Drawing.Imaging.ImageFormat.Jpeg);//保存到服务器路径
//bitmap.Save(filePath + ".bmp", System.Drawing.Imaging.ImageFormat.Bmp);
//bitmap.Save(filePath + ".gif", System.Drawing.Imaging.ImageFormat.Gif);
//bitmap.Save(filePath + ".png", System.Drawing.Imaging.ImageFormat.Png);
ms.Close();//关闭当前流,并释放所有与之关联的资源
bitmap.Dispose();
}
catch (Exception e)
{
string massage= e.Message;
}
return filename;//返回相对路径
}
#endregion #region 图片转base64
/// <summary>
/// 图片转base64
/// </summary>
/// <param name="path">图片路径</param>
/// <returns>返回一个base64字符串</returns>
public string decodeImageToBase64(string path) {
path = "E:/vs 2015/newaqtcprj/WEB/UpFile/2018/12/20181229174708_7471722c425a2ec08fa513ddf4f8c76306d55fbb0fbd9d8.jpg";
string base64str = ""; //站点文件目录
string fileDir = HttpContext.Current.Server.MapPath("/");
string[] arrfileDir = fileDir.Split('\\');
fileDir = arrfileDir[0] + "\\" + arrfileDir[1] + "\\" + arrfileDir[2];
try
{
//读图片转为Base64String
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(Path.Combine(fileDir, "WEB\\UpFile\\2018\\12\\20181229174708_7471722c425a2ec08fa513ddf4f8c76306d55fbb0fbd9d8.jpg"));
//System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(path);
MemoryStream ms = new MemoryStream();
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] arr = new byte[ms.Length];
ms.Position = 0;
ms.Read(arr, 0, (int)ms.Length);
ms.Close();
bmp.Dispose();
base64str = Convert.ToBase64String(arr);
}
catch (Exception e)
{
string mss = e.Message;
}
return "data:image/jpg;base64," + base64str;
}
#endregion
c# 中base64字符串和图片的相互转换的更多相关文章
- Base64 字符串转图片 问题整理汇总
前言 最近碰到了一些base64字符串转图片的开发任务,开始觉得没啥难度,但随着开发的进展还是发现有些东西需要记录下. Base64 转二进制 这个在net有现有方法调用: Convert.FromB ...
- java 图片转base64字符串、base64字符串转图片
java 图片转base64字符串.base64字符串转图片 1. 图片转base64字符串: /** * base64编码字符串转换为图片 * @param imgStr base64编码字符串 * ...
- 前端获取Base64字符串格式图片Ajax到后端处理
前端获取到的Base64字符串格式图片一般都是经过处理的图片,例如:裁剪过后的,这里假设data为获取到的Base64字符串格式图片 Base64格式图片的格式为 “data:image/png;ba ...
- 保存头像- vue项目-base64字符串转图片
<img :onerror="errpic" class="customerHead" :src="param.customerHead&quo ...
- php将base64字符串转换为图片
昨天用一个js插件 [链接]: http://www.erdangjiade.com/js/910.html 实行了图片裁剪并预览,不过它生产的图片资源是一个base64字符串,不好保存后来在网上找到 ...
- C# imgage图片转base64字符/base64字符串转图片另存成
//图片转为base64编码的字符串 protected string ImgToBase64String(string Imagefilename) { try { Bitmap bmp = new ...
- 转 c#中 base64字符串与普通字符串互转
https://blog.csdn.net/hwt0101/article/details/79758912 转成 Base64 形式的 System.String: string a = &q ...
- java 图片Base64字符串转图片二进制数组
public static byte[] base64ToImgByteArray(String base64) throws IOException{ sun.misc.BASE64Decoder ...
- C# 常用方法——base64字符串转图片
其他常用方法详见:https://www.cnblogs.com/zhuanjiao/p/12060937.html /// <summary> /// base64编码的文本转为图片 / ...
随机推荐
- 使用docker搭建laravel记叙
第一步,先从dockerhub上pull一个docker镜 docker pull laraedit/laraedit 这个docker镜像已经安装了 nginx.laravel和mysql,所以不需 ...
- Python3练习:对员工信息文件,实现增删改查操作
1.练习要求: 2.数据文件(data_staff.txt) 1,Alex Li,22,13651054684,运维,2013-02-04 2,Jack Wang,20,13312331232,HR, ...
- C Mingw gcc printf 刷新缓冲行
C Mingw gcc printf 刷新缓冲行 参考:https://stackoverflow.com/questions/13035075/printf-not-printing-on-cons ...
- Python3爬虫(十四) 验证码处理
Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.图形验证码识别1.使用tesserocr import tesserocr from PIL import I ...
- 【blockly教程】第五章 循环结构
在这里,我们将介绍一个新游戏--Pond Tutor 在Pond Tutor(https://blockly-games.appspot.com/pond-tutor)这个游戏中,我们将扮演黄色的鸭子 ...
- 由OpenResty粘合的企业Web架构
前言: 2012年2月章亦春(agentzh)在Tech-Club的一次线下聚会上以<由Lua 粘合的Nginx生态环境>为主题做了演讲,分析了企业Web架构的趋势,即一个看起来完整 ...
- 常用 Maven 配置
打包为带依赖的 JAR <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEnc ...
- 算法-PHP实现八大算法
八大算法原理详解 交换函数:注意要按引用传递,否则无法真正交换两个数的值 function exchange(&$a, &$b){ $temp = $a; $a = $b; $b = ...
- LeetCode:34. Search for a Range(Medium)
1. 原题链接 https://leetcode.com/problems/search-for-a-range/description/ 2. 题目要求 给定一个按升序排列的整型数组nums[ ]和 ...
- wireshark抓包分析——TCP/IP协议
本文来自网易云社区 当我们需要跟踪网络有关的信息时,经常会说"抓包".这里抓包究竟是什么?抓到的包又能分析出什么?在本文中以TCP/IP协议为例,简单介绍TCP/IP协议以及如何通 ...