asp.C#實(shí)現(xiàn)圖片文件與base64string編碼解碼
更新時(shí)間:2010年03月15日 10:57:41 作者:
前些天在opera論壇里面當(dāng)了個(gè)flashblocker腳本文件,顧名思義,就是把網(wǎng)頁(yè)中的flash給過濾了,過濾之后呢就會(huì)在原位置顯示一張圖片,以前用firefox時(shí)的flash過濾插件也是這樣,而且顯示的圖片也一樣,一樣的難看,于是就想換換它。
圖片當(dāng)然是存在那個(gè)js文件里面,于是我就打開了flashblocker.js,然后瀏覽一下,找到下面一句:
var flash = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAA......'
(小白)<SPAN style="FONT-SIZE: small">這是我第一次認(rèn)識(shí)到base64的用場(chǎng),記得以前保存網(wǎng)頁(yè)的時(shí)候,總習(xí)慣保存為.mht格式,因?yàn)檫@樣會(huì)把網(wǎng)頁(yè)中的圖片也保存下來,但是一直奇怪為何只有一</SPAN>
view sourceprint?<SPAN style="FONT-SIZE: small">個(gè).mht文件,打開來卻有圖片,現(xiàn)在知道保存為mht格式時(shí)就把網(wǎng)頁(yè)中的圖片全部轉(zhuǎn)成base64字符串存在里面了。</SPAN>
view sourceprint?<SPAN style="FONT-SIZE: small"> </SPAN><SPAN style="FONT-SIZE: small">實(shí)現(xiàn):</SPAN>
view sourceprint?<SPAN style="FONT-SIZE: small"> <IMG src="http://pic002.cnblogs.com/img/1971ruru/201003/2010031510340776.jpg"></SPAN>
其實(shí)很簡(jiǎn)單,圖片文件到Base64String的轉(zhuǎn)換,只需要Convert類里面的一個(gè)ToBase64String方法即可
Image fromImage = Image.FromFile( txtImg.Text );
MemoryStream stream = new MemoryStream();
fromImage.Save( stream, imgFormat[extension] );
txtString.Text = Convert.ToBase64String( stream.GetBuffer() );
在這里補(bǔ)充一下,貌似icon文件是不能轉(zhuǎn)換的(自己試驗(yàn)的結(jié)果),需要轉(zhuǎn)icon的話就要變通一下了,曲線救國(guó)~
從Base64String提取圖片的話,需要Convert.FromBase64String()方法,
MemoryStream stream = new MemoryStream( Convert.FromBase64String( txtString.Text ) );
bitmap img = new Bitmap( stream );
img.Save( txtImg.Text );
MessageBox.Show( "Completed!" );
貌似有些同志在轉(zhuǎn)換回來的時(shí)候出現(xiàn)問題,感覺應(yīng)該是定義stream時(shí)出的問題,new的時(shí)候直接把轉(zhuǎn)換的byte[]給它,應(yīng)該就不會(huì)存在“超出預(yù)計(jì)范圍”的錯(cuò)誤。轉(zhuǎn)換出問題應(yīng)該是跟原圖用Java或者其它語(yǔ)言生成的沒有關(guān)系的。因?yàn)閎ase64編碼應(yīng)該是一樣的。
作者:一修先生
出處:http://1971ruru.cnblogs.com
var flash = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAA......'
(小白)<SPAN style="FONT-SIZE: small">這是我第一次認(rèn)識(shí)到base64的用場(chǎng),記得以前保存網(wǎng)頁(yè)的時(shí)候,總習(xí)慣保存為.mht格式,因?yàn)檫@樣會(huì)把網(wǎng)頁(yè)中的圖片也保存下來,但是一直奇怪為何只有一</SPAN>
view sourceprint?<SPAN style="FONT-SIZE: small">個(gè).mht文件,打開來卻有圖片,現(xiàn)在知道保存為mht格式時(shí)就把網(wǎng)頁(yè)中的圖片全部轉(zhuǎn)成base64字符串存在里面了。</SPAN>
view sourceprint?<SPAN style="FONT-SIZE: small"> </SPAN><SPAN style="FONT-SIZE: small">實(shí)現(xiàn):</SPAN>
view sourceprint?<SPAN style="FONT-SIZE: small"> <IMG src="http://pic002.cnblogs.com/img/1971ruru/201003/2010031510340776.jpg"></SPAN>
其實(shí)很簡(jiǎn)單,圖片文件到Base64String的轉(zhuǎn)換,只需要Convert類里面的一個(gè)ToBase64String方法即可
復(fù)制代碼 代碼如下:
Image fromImage = Image.FromFile( txtImg.Text );
MemoryStream stream = new MemoryStream();
fromImage.Save( stream, imgFormat[extension] );
txtString.Text = Convert.ToBase64String( stream.GetBuffer() );
在這里補(bǔ)充一下,貌似icon文件是不能轉(zhuǎn)換的(自己試驗(yàn)的結(jié)果),需要轉(zhuǎn)icon的話就要變通一下了,曲線救國(guó)~
從Base64String提取圖片的話,需要Convert.FromBase64String()方法,
復(fù)制代碼 代碼如下:
MemoryStream stream = new MemoryStream( Convert.FromBase64String( txtString.Text ) );
bitmap img = new Bitmap( stream );
img.Save( txtImg.Text );
MessageBox.Show( "Completed!" );
貌似有些同志在轉(zhuǎn)換回來的時(shí)候出現(xiàn)問題,感覺應(yīng)該是定義stream時(shí)出的問題,new的時(shí)候直接把轉(zhuǎn)換的byte[]給它,應(yīng)該就不會(huì)存在“超出預(yù)計(jì)范圍”的錯(cuò)誤。轉(zhuǎn)換出問題應(yīng)該是跟原圖用Java或者其它語(yǔ)言生成的沒有關(guān)系的。因?yàn)閎ase64編碼應(yīng)該是一樣的。
作者:一修先生
出處:http://1971ruru.cnblogs.com
相關(guān)文章
使用DataTable更新數(shù)據(jù)庫(kù)(增,刪,改)
使用DataTable更新數(shù)據(jù)庫(kù)(增,刪,改),需要的朋友可以參考一下2013-03-03.net開發(fā)中幾個(gè)重要的認(rèn)識(shí)誤區(qū)小結(jié)
.net如今已經(jīng)很流行,成為趕時(shí)髦的程序員的首選。但是,大量剛剛接觸.net的程序員的確存在一定的認(rèn)識(shí)誤區(qū),這里先介紹一部分。2010-04-04.NetCore使用Swagger+API多版本控制的流程分析
這篇文章主要介紹了.NetCore使用Swagger+API多版本控制的流程分析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12最鋒利的Visual Studio Web開發(fā)工具擴(kuò)展:Web Essentials使用詳解
Web Essentials是目前為止見過的最好用的VS擴(kuò)展工具了,具體功能請(qǐng)待我一一道來。2016-06-06ASP.NET Core文件上傳與下載實(shí)例(多種上傳方式)
下面小編就為大家分享一篇ASP.NET Core文件上傳與下載實(shí)例(多種上傳方式),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-01-01NLog路由規(guī)則和上下文信息知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給各位整理的是關(guān)于NLog路由規(guī)則和上下文信息的相關(guān)文章,有需要的朋友們學(xué)習(xí)下。2019-10-10