将图片进行Base64编码后传输
base64解析

base64解析
base64编码是一种用64个字符来表示任意二进制数据的方法。
它是一种简单
的文本编码方式,可以将任何类型的文本或二进制数据编码为文本文件,例如电子邮件附件,图像文件或其他二进制数据文件。
Base64编码的性质非常强,使用
base64编码可以将任何字符、数字和控制字符统一转换为64个字符组成的字符串,比其他任何字符串编码都要有效得多,以节省空间,保护数据完整性,防止数据泄漏。
Base64编码的优点很多,首先,它有效地解决了字符编码的繁琐问题,编码
规则简洁易懂,能够有效缩短图片信息在文件传输过程中的传输时间和存储空间。
它还支持大多数常用浏览器,并且极其方便,可以简单方便地对图片文件和文本文件进行编解码,从而能够轻松地实现图片保护,确保数据的真实性,避免图片被破解和失真。
总之,base64编码是一种强大,有效,安全的编码方式,在文件传输、信息加密和从字符串或二进制数据文件提取信息等方面都有重要作用,今后传输文件和安全传输信息将会更加容易,更安全。
基于Base64与3DES结合的图像加密解密算法实现

1概述互联网的高速发展与迅速普及,给人们生活带来了很多便利,比如丰富人们的交流方式、提供海量数据等。
享受着各种好处的同时,也面临着诸多挑战:过度依赖网络、网络犯罪率增大,以及信息的泄露、假冒。
因此,信息安全越来越受到人们的重视。
经过多年的发展,信息安全技术已从最初的加密技术发展到如今的隐藏技术。
但在实际应用过程中,简单的隐藏算法容易受到入侵者的攻击,提取有用信息的难度较低。
所以,为了使信息的传输更安全和隐蔽,在信息隐藏操作之前,需要将保密信息根据特定规则被加密,然后隐藏在传输载体中进行传输。
利用这种加密传输方法,即使入侵者在载波中提取信息,也难以区分加密之前内容,从而能有效保护有用信息。
互联网上的数据很容易被篡改。
任何人都可以通过网络轻松获取其他人的信息,特别是通过普通PC 机获取图像、音乐、动画等。
因此,保护网络数据,尤其是图像数据,成为了一项非常紧迫和关键的任务。
图像数据加密技术的难度高在于,相比文本数据,数据样本多、冗余度高、像素邻域内相关性强等特点被用于描述图像数据,因此图像在加密时效率低、可逆性弱,除此之外,入侵者还可以基于图像数据样本量进行分析。
图像数据的加密解密规则是,将图像数据以明文的身份被保存下来,设置密钥,通过加密算法实现加密,完成传输后,使用对应的解密算法对传输后的数据进行解密,得到结果,实现安全传输。
2理论基础2.1Base64在计算机中任何数据都是按A SCII 码存储的,而A SCII 码的128~255之间的值是不可见字符。
而在网络上交换数据时,从A 到B ,通常有多个路由设备。
由于不同设备处理字符的方式不同,这些不可见字符可能处理不当,不利于传输。
所以就先把数据通过Base64编码方式,变为常规可见的字符,大大降低了由于网络传输通过不同设备处理引起的误差。
Base64编码是基于64个字符A -Z,a-z ,0-9,+,/的编码方式,因为2的6次方正好为64,所以就用6bit 就可以表示出64个字符,eg:000000对应A ,000001对应B 。
js对图片base64编码字符串进行解码并输出图像示例

js对图⽚base64编码字符串进⾏解码并输出图像⽰例复制代码代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><style>body{padding-left:75px;background-color:beige}</style><script>/////////////////////////////base64编码的GIF图像解码//By Mozart0//2005/10/29//////////////////////建⽴GIF类的对象//类GIF在此函数内部定义//str64:gif⽂件的Base64编码字符串//成功返回创建的GIF对象//失败返回nullfunction getGif(str64){var bytes=decodeBase64(str64);if(!bytes){alert("错误:⽆效的Base64编码");return null;}var gif=new GIF();for(var i=0;i<6;i++)gif.version+=String.fromCharCode(bytes[i]);if(gif.version.slice(0,3)!="GIF"){alert("错误:⾮Gif图像格式");return null;}gif.width=bytes[i]|(bytes[i+1]<<8);gif.height=bytes[i+2]|(bytes[i+3]<<8);var f=bytes[i+4];gif.colorResolution=(f>>4&0x7)+1;gif.sorted=(f&0x8)?true:false;gif.backgroundIndex=bytes[i+5];gif.pixelAspectRadio=bytes[i+6];if(f&0x80){gif.globalPalette=[];i+=getPalette(i+7,bytes,gif.globalPalette,2<<(f&0x7));}i+=7;for(var j=i;j<bytes.length;j++)if(bytes[j]==0x21&&bytes[j+1]==0xf9)break;if(j==bytes.length){for(;i<bytes.length;i++)if(bytes[i]==0x2c)break;if(i==bytes.length){alert("错误:找不到图像数据");return null;}var f=new GIF_Frame();if(!getSingleFrame(i,f))return null;elsegif.frames.push(f);}else{i=j;do{var f=new GIF_Frame();var t=getSingleFrame(i,f);if(!t)return null;gif.frames.push(f);for(i+=t;i<bytes.length;i++)if(bytes[i]==0x21&&bytes[i+1]==0xf9)break;}while(i<bytes.length);}return gif;//内部过程,⽣成⾊表function getPalette(pos,s,d,len){len*=3;for(var i=pos;i<pos+len;i+=3)d.push('#'+(s[i]<=0xf?"0":"")+s[i].toString(16)+(s[i+1]<=0xf?"0":"")+s[i+1].toString(16)+(s[i+2]<=0xf?"0":"")+s[i+2].toString(16));return len;}//内部过程,整合数据段function getBlock(pos,s,d){var p=pos;while(len=s[p++]){for(var i=0;i<len;i++)d.push(s[p+i]);}return p-pos;}//内部过程,获取⼀帧数据function getSingleFrame(pos,frame){var i=pos;if(bytes[i]==0x21){i+=3;if(bytes[i]&1)frame.transparentIndex=bytes[i+3];frame.delay=bytes[i+1]|(bytes[i+2]<<8);for(i+=5;i<bytes.length&&bytes[i]!=0x2c;i++);if(i==bytes.length){alert("错误:找不到图像标志符");return 0;}}frame.offsetX=bytes[i+1]|(bytes[i+2]<<8);frame.offsetY=bytes[i+3]|(bytes[i+4]<<8);frame.width=bytes[i+5]|(bytes[i+6]<<8);frame.height=bytes[i+7]|(bytes[i+8]<<8);var f=bytes[i+9];i+=10;if(f&0x40)frame.interlace=true;if(f&0x20)frame.sorted=true;if(f&0x80){frame.colorResolution=(f&0x7)+1;frame.localPalette=[];i+=getPalette(i,bytes,frame.localPalette,1<<frame.colorResolution); }else{frame.colorResolution=gif.colorResolution;frame.localPalette=gif.globalPalette;}var lzwLen=bytes[i++]+1;i+=getBlock(i,bytes,frame.data);frame.data=decodeLzw(frame.data,lzwLen);return frame.data?i-pos:0;}//定义存储GIF⽂件的数据结构//提供⽅法showInfo,返回图⽚信息function GIF(){this.version=""; //版本号this.width=0; //逻辑屏幕宽度this.height=0; //逻辑屏幕⾼度this.colorResolution=0; //颜⾊深度this.sorted=false; //全局⾊表分类标志this.globalPalette=null; //全局⾊表this.backgroundIndex=-1; //背景⾊索引this.pixelAspectRadio=0; //像素宽⾼⽐this.frames=[]; //图像各帧,见GIF_Framethis.showInfo=function(sep){ //显⽰图⽚信息,sep为⾏分隔符if(!sep)sep="\n";var s="Gif infomation:"+sep+"-------------------";s+=subInfo(this)+sep;for(var i=0;i<this.frames.length;i++)s+=sep+"frames "+i+"----------"+subInfo(this.frames[i]);return s;function subInfo(o){var s="";for(var i in o){if(i=="showInfo"||i=="draw")continue;s+=sep+i+":";if(typeof(o[i])=="object")s+=(o[i]?o[i].length:"null");elses+=o[i];}return s;}}}//定义存储⼀帧图象的数据结构//提供⽅法draw,绘图function GIF_Frame(){this.offsetX=0; //X⽅向偏移量this.offsetY=0; //Y⽅向偏移量this.width=0; //图象宽度this.height=0; //图象⾼度this.localPalette=null; //局部⾊表this.colorResolution=0; //颜⾊深度this.interlace=false; //交错标志this.sorted=false; //局部⾊表分类标志this.data=[]; //图像数据,存储各像素颜⾊的整数索引this.transparentIndex=-1; //透明⾊索引this.delay=0; //帧延时this.draw=function(parent,zoom){if(!this.data.length)return;if(!parent)parent=document.body;zoom=1;if(parent.clientWidth<this.width*zoom)parent.style.width=this.width*zoom;if(parent.clientHeight<this.height*zoom)parent.style.height=this.height*zoom;var id="ImgDefaultDraw";var img=document.getElementById(id);if(img)delete parent.removeChild(img);img=document.createElement("DIV");img.id=id;parent.appendChild(img);img.style.position="absolute";var t=document.createElement("DIV");t.style.overflow="hidden";t.style.position="absolute";defLayout(this.data,this.localPalette,this.width,this.height,img,t,zoom);delete t;}}}//Base64解码//strIn,输⼊字符串//成功返回⼀个数组,每⼀个元素包含⼀字节信息//失败返回nullfunction decodeBase64(strIn){if(!strIn.length||strIn.length%4)return null;var str64= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; var index64=[];for(var i=0;i<str64.length;i++)index64[str64.charAt(i)]=i;var c0,c1,c2,c3,b0,b1,b2;var len=strIn.length;var len1=len;if(strIn.charAt(len-1)=='=')len1-=4;var result=[];for(var i=0,j=0;i<len1;i+=4){c0=index64[strIn.charAt(i)];c1=index64[strIn.charAt(i+1)];c2=index64[strIn.charAt(i+2)];c3=index64[strIn.charAt(i+3)];b0=(c0<<2)|(c1>>4);b1=(c1<<4)|(c2>>2);b2=(c2<<6)|c3;result.push(b0&0xff);result.push(b1&0xff);result.push(b2&0xff);}if(len1!=len){c0=index64[strIn.charAt(i)];c1=index64[strIn.charAt(i+1)];c2=strIn.charAt(i+2);b0=(c0<<2)|(c1>>4);result.push(b0&0xff);if(c2!='='){c2=index64[c2];b1=(c1<<4)|(c2>>2);result.push(b1&0xff);}}return result;}//⽤于GIF的LZW解码函数//arrBytes为源数据,nBits为初始编码位数//成功返回数组,每个元素包括⼀个颜⾊索引//失败返回nullfunction decodeLzw(arrBytes,nBits){var cc=1<<(nBits-1);var eoi=cc+1;var table=[],mask=[],result=[];for(var i=0;i<cc;i++)table[i]=(i>>8&0xf).toString(16)+(i>>4&0xf).toString(16)+(i&0xf).toString(16);for(i=2,mask[1]=1;i<13;i++)mask[i]=mask[i-1]<<1|1;var bc=nBits;var pos=0,temp=0,tleft=0,code=0,old=0;while(true){while(tleft<bc){temp=temp|(arrBytes[pos++]<<tleft);tleft+=8;}code=temp&mask[bc];tleft-=bc;temp>>=bc;if(code==eoi)break;if(code==cc){table.length=cc+2;bc=nBits;old=code;continue;}if(code<table.length){t=table[code];if(old!=cc)table.push(table[old]+t.slice(0,3));}else if(old<table.length){t=table[old]+table[old].slice(0,3);table.push(t);}else{alert("错误:图像数据⽆效");return null;}old=code;for(var i=0;i<t.length;i+=3)result.push(parseInt(t.substr(i,3),16))if(table.length==1<<bc&&bc<12)bc++;}return result;}//根据字节数组data布局,以最少的div完成绘图function defLayout(data,palette,width,height,image,block,zoom){var map=new Array(height);for(var i=0;i<height;i++){map[i]=new Array(width);for(var j=0;j<width;j++)map[i][j]=data[i*width+j];}var i,j,i1,i2,j1,j2,c;for(i=0;i<height;i++)for(j=0;j<width;){if(map[i][j]==0x100){j++;continue;}c=map[i][j];for(i1=i+1;i1<height&&map[i1][j]==c;i1++);for(j1=j+1;j1<width;j1++){for(i2=i;i2<i1&&map[i2][j1]==c;i2++);if(i2<i1)break;}for(i2=i;i2<i1;i2++)for(j2=j;j2<j1;j2++)map[i2][j2]=0x100;var x=block.cloneNode(true);x.style.left=j*zoom;x.style.top=i*zoom;x.style.width=(j1-j)*zoom;x.style.height=(i1-i)*zoom;x.style.backgroundColor=palette[c];image.appendChild(x);j=j1;}}</SCRIPT><script>function main(){var t=new Date().getTime();var xmldom=document.getElementById("imgData");vargif=getGif("R0lGODlhDwAPAKECAAAAzMzM/////wAAACwAAAAADwAPAAACIISPeQHsrZ5ModrLlN48CXF8m2iQ3YmmKqVlRtW4MLwWACH+H09wdGltaXplZCBieSBVbGVhZCBTbWFydFNhdmVyIQAAOw== var info=document.getElementById("info");info.innerHTML=gif.showInfo("<br>");t=new Date().getTime();gif.frames[0].draw(document.getElementById("canvas"),1);info.innerHTML+="<br>绘图耗时"+(new Date().getTime()-t)+"ms";}</SCRIPT><body onload="main()"><div id="canvas"></div><hr><div id="info">页⾯载⼊中,请稍候...</div></body></html>PS:这⾥再为⼤家推荐⼏款在线图⽚⼯具供⼤家参考使⽤附:此外再推荐⼀款base64编码转换⼯具。
图片base64格式转为file文件类型上传方法

图⽚base64格式转为file⽂件类型上传⽅法⽇常使⽤⽂件上传⽅式,都是通过input type='file'的⽂件选择框进⾏⽂件上传。
介绍通过得到图⽚的base64格式进⾏上传的⽅式,具体情况如下⽰意:在项⽬开发中,需要进⾏照⽚采集,通过摄像头直接拍照采集到⼈脸数据,再上传到后台进⾏保存。
照⽚采集插件,返回的⼈脸数据是base64格式的字符串,因此前端需要把图⽚数据转换为后台可以接收的⽅式进⾏上传。
1、照⽚采集接⼝返回数据格式。
其中,param.image字段为接⼝返回的采集照⽚的base64数据格式。
command: "GetImageRet"param: {image: "/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5P…………………………2Q==" status: 0}requestId: "201905131557726753000"页⾯代码:<el-form-item label="⼈脸照路径" prop="facePicPath" style="width: 98%"> <el-input style="width: 80%;float: left;" :disabled="dialogStatus=='view'" v-model="form.facePicPath" placeholder="请输⼊⼈脸照路径"></el-input><span style="width: 20%;float: left;"> <el-button @click="getFaceInfoFun('form')" style="background: #408FD8;color: #fff;border: 1px solid #408FD8;margin-left: 5px;">⼈脸采集</el-button></span></el-form-item>JS事件:1 getFaceInfoFun(){ // ⼈脸采集2 const requestId = curTimeFun(1,'-1') + Date.parse(new Date());3 const param = {command: 'GetImage', requestId: requestId};4 const _that = this;5 $.ajax({6 type: 'post',7 data: JSON.stringify(param),8 url: _that.deviceUrl,9 success: function(data) {10 let imgBase='data:image/gif;base64,' + JSON.parse(data).param.image;11 let blob= dataURLtoFile(imgBase,'image/jpeg');12 _that.submitPic(blob);13 },14 error: function(rsp) {15 _that.$notify({title: '异常', message: "操作异常,请联系管理员", dangerouslyUseHTMLString: true, type: 'warning', duration: 0});16 }17 });18 },1 //将base64转换为blob2 export function dataURLtoFile(dataURI, type) {3 let binary = atob(dataURI.split(',')[1]);4 let array = [];5 for(let i = 0; i < binary.length; i++) {6 array.push(binary.charCodeAt(i));7 }8 return new Blob([new Uint8Array(array)], {type:type });9 }1 // 图⽚提交事件。
浅谈CSS图片base64编码技术

浅谈CSS 图⽚base64编码技术(1)引⾔ 图⽚处理在前端⼯作中可谓占据了很重要的⼀壁江⼭。
⽽图⽚的 base64 编码可能相对⼀些⼈⽽⾔⽐较陌⽣,本⽂不是从纯技术的⾓度去讨论图⽚的 base64 编码。
标题略⼤,不过只是希望通过⼀些浅显的论述,让你知道什么是图⽚的 base64 编码,为什么我们要⽤它,我们如何使⽤并且⽅便的使⽤它,并让你懂得如何去在前端的实际⼯作中运⽤它。
(2)什么是 base64 编码? 我不是来讲概念的,直接切⼊正题,图⽚的 base64 编码就是可以将⼀副图⽚数据编码成⼀串字符串,使⽤该字符串代替图像地址。
这样做有什么意义呢?我们知道,我们所看到的⽹页上的每⼀个图⽚,都是需要消耗⼀个 http 请求下载⽽来的(所有才有了 csssprites 技术的应运⽽⽣,但是 csssprites 有⾃⾝的局限性,下⽂会提到)。
没错,不管如何,图⽚的下载始终都要向服务器发出请求,要是图⽚的下载不⽤向服务器发出请求,⽽可以随着 HTML 的下载同时下载到本地那就太好了,⽽ base64 正好能解决这个问题。
那么图⽚的 base64 编码长什么样⼦呢?举个栗⼦。
的⾸页搜索框右侧的搜索⼩图标使⽤的就是base64编码。
我们可以看到:1234//在css ⾥的写法#fkbx-spch, #fkbx-hspch {background: url(data:image/gif;base64,R0lGODlhHAAmAKIHAKqqqsvLy0hISObm5vf394uLiwAAAP///yH5B…EoqQqJKAIBaQOVKHAXr3t7txgBjboSvB8EpLoFZywOAo3LFE5lYs/QW9LT1TRk1V7S2xYJADs=) no-repeat center;}12//在html 代码img 标签⾥的写法<img src="data:image/gif;base64,R0lGODlhHAAmAKIHAKqqqsvLy0hISObm5vf394uLiwAAAP///yH5B…EoqQqJKAIBaQOVKHAXr3t7txgBjboSvB8EpLoFZywOAo3LFE5lYs/QW9LT1TRk1V7S2xYJADs=">上⾯分别是图⽚的 base64 编码在 css ⾥⾯的写法和在 html<img> 标签⾥的写法。
base编码解码算法 -回复

base编码解码算法-回复进化中的编码解码算法:从BASE64到BASE58简介编码解码算法是计算机科学领域中非常常见的一种算法,用于将数据转换成特定的格式,便于传输和存储。
其中,BASE编码解码算法是一种常见的算法,它被广泛用于网络传输和文件压缩领域。
本文将从BASE64开始,逐步介绍及比较BASE58编码,探讨它们在实际应用中的差异。
1. BASE64编码解码算法BASE64编码算法起源于20世纪70年代,最初用于将二进制数据转换成文本格式,以便在电子邮件中传输。
该算法使用64个可打印的ASCII字符来表示二进制数据,具有编码简单、字符集固定等特点。
编码过程:1. 将输入数据按照8位分组,每组包含6位二进制数据。
2. 将每个6位的二进制数据转换成一个可打印的ASCII字符,共有64个可打印字符作为字典。
3. 如果输入数据的长度不是8的整数倍,需要进行填充操作,通常使用'='字符进行填充。
解码过程:1. 将输入的字符串进行逆向操作,转换成对应的6位二进制数据。
2. 将6位二进制数据重新组合成8位分组。
3. 按照ASCII编码表,将8位二进制数据转换成对应的字符。
BASE64编码解码算法在各种应用场景中得到了广泛采用,包括网络传输、图片文件、邮件附件等等。
然而,由于其字符集中包含了'+', '/'等特殊字符,使得该编码在某些情况下不太适合使用。
比如在URL中传输数据时,需要对这些特殊字符进行URL编码,增加了处理复杂度。
2. BASE58编码解码算法BASE58编码是对BASE64编码的改进和优化,最早用于比特币的地址生成。
它的优势在于去除了BASE64中的一些特殊字符,使得生成的编码更适合用于URL和文件命名等场景。
该算法使用58个字符作为字典,包括大写字母、小写字母和数字。
编码过程:1. 将输入数据按照8位分组,每组包含5位二进制数据。
2. 将每个5位的二进制数据转换成一个可打印的字符,共有58个字符作为字典。
Base64编码原理及应用

Base64编码原理及应⽤最近在做⼀个H5上传图⽚并压缩的项⽬,其过程主要是先将图⽚上传通过readAsDataURL获取上传图⽚base64编码,然后根据⾼宽⽐将图⽚画到canvas上实现压缩,在通过toDataURL 获取压缩后的图⽚。
在该过程中⽤到base64编码,于是就想弄清楚base64编码原理,才有了这篇博客。
Base64编码的来历为什么会有Base64编码呢?因为有些⽹络传送渠道并不⽀持所有的字节,例如传统的邮件只⽀持可见字符的传送,像ASCII码的控制字符就不能通过邮件传送。
这样⽤途就受到了很⼤的限制,⽐如图⽚⼆进制流的每个字节不可能全部是可见字符,所以就传送不了。
最好的⽅法就是在不改变传统协议的情况下,做⼀种扩展⽅案来⽀持⼆进制⽂件的传送。
把不可打印的字符也能⽤可打印字符来表⽰,问题就解决了。
Base64编码应运⽽⽣,Base64编码就是⼀种基于64个可打印字符来表⽰⼆进制数据的表⽰⽅法。
Base64编码过程将每三个字节作为⼀组,⼀共是24个⼆进制位。
将这24个⼆进制位分为四组,每个组有6个⼆进制位。
在每组前⾯加两个00,扩展成32个⼆进制位,即四个字节。
根据下表,得到扩展后的每个字节的对应符号,这就是Base64的编码值。
Base64编码表keycharkeycharkeycharkeychar0A17R34i51z1B18S35j5202C19T36k5313D20U37l5424E21V38m5535F22W39n5646G23X40o5757H24Y41p5868I25Z42q5979J26a43r60810K27b44s61911L28c45t62+12M29d46u63/13N30e47v14O31f48w15P32g49x16Q33h50y字符长度为能被3整除时,⽐如ManM a nASCII: 77 97 1108bit字节: 01001101 01100001 011011106bit字节: 010011 010110 000101 101110⼗进制: 19 22 5 46对应编码: T W F u"M"、"a"、"n"的ASCII值分别是77、97、110,对应的⼆进制值是01001101、01100001、01101110,将它们连成⼀个24位的⼆进制字符串010011010110000101101110。
C#base64和图片互转

C#base64和图⽚互转C# imgage图⽚转base64字符/base64字符串转图⽚另存成//图⽚转为base64编码的字符串protected 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 = 0;ms.Read(arr, 0, (int)ms.Length);ms.Close();return Convert.ToBase64String(arr);}catch (Exception ex){return null;}}//base64编码的字符串转为图⽚protected Bitmap Base64StringToImage(string strbase64){try{byte[] arr = Convert.FromBase64String(strbase64);MemoryStream ms = new MemoryStream(arr);Bitmap bmp = new Bitmap(ms);bmp.Save(@"d:\test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);//bmp.Save(@"d:\"test.bmp", ImageFormat.Bmp);//bmp.Save(@"d:\"test.gif", ImageFormat.Gif);//bmp.Save(@"d:\"test.png", ImageFormat.Png);ms.Close();return bmp;}catch (Exception ex){return null;}}2: 图⽚直接显⽰string Base64String = "";//太长就不贴出来了byte[] bytes = Convert.FromBase64String(Base64String);ImageTagId.ImageUrl = "data:image/jpeg;base64," + Convert.ToBase64String(bytes);//3:转换成图⽚另存为然后图⽚显⽰出来public System.Drawing.Image Base64ToImage(string base64String){byte[] imageBytes = Convert.FromBase64String(base64String);MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);ms.Write(imageBytes, 0, imageBytes.Length);System.Drawing.Image image = System.Drawing.Image.FromStream(ms, true);return image;}使⽤⽅法:Base64ToImage(dd).Save(Server.MapPath("Hello.jpg"));Image1.ImageUrl = "Hello.jpg";4:直接转换存为路径下图⽚string dd = "";//base64字符串var bytes = Convert.FromBase64String(dd);using (var imageFile = new FileStream(@"d:\Hello1.jpg", FileMode.Create)){imageFile.Write(bytes, 0, bytes.Length);imageFile.Flush();}5://直接转换存为路径下图⽚string base64Str=""/byte[] bytes = System.Convert.FromBase64String(dd);File.WriteAllBytes(@"d:\newfile.jpg", bytes);string filePath = @"d:\MyImage.jpg";File.WriteAllBytes(filePath, Convert.FromBase64String(base64Str));6:多张base64图⽚转换为图⽚另存为public string Base64ToImage(string upimgPath, string base64String){string goodspath = Server.MapPath(upimgPath); //⽤来⽣成⽂件夹if (!Directory.Exists(goodspath)){Directory.CreateDirectory(goodspath);}var imgPath = string.Empty;if (!string.IsNullOrEmpty(base64String)){var splitBase = base64String.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);foreach (var item in splitBase){var path = upimgPath + Guid.NewGuid() + ".jpg";string filePath = Server.MapPath(path);// Server.MapPath(upimgPath + Guid.NewGuid() + ".jpg"); File.WriteAllBytes(filePath, Convert.FromBase64String(item));imgPath += path + ";";}}else { imgPath = ";"; }return imgPath.TrimEnd(';');}使⽤⽅法:va headimg="";Base64ToImage("UpLoadImg/HeadImage/", headimg)。