asp.C#實(shí)現(xiàn)圖片文件與base64string編碼解碼
更新時(shí)間:2010年03月15日 10:57:41 作者:
前些天在opera論壇里面當(dāng)了個flashblocker腳本文件,顧名思義,就是把網(wǎng)頁中的flash給過濾了,過濾之后呢就會在原位置顯示一張圖片,以前用firefox時(shí)的flash過濾插件也是這樣,而且顯示的圖片也一樣,一樣的難看,于是就想換換它。
圖片當(dāng)然是存在那個js文件里面,于是我就打開了flashblocker.js,然后瀏覽一下,找到下面一句:
var flash = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAA......'
?。ㄐ“祝?lt;SPAN style="FONT-SIZE: small">這是我第一次認(rèn)識到base64的用場,記得以前保存網(wǎng)頁的時(shí)候,總習(xí)慣保存為.mht格式,因?yàn)檫@樣會把網(wǎng)頁中的圖片也保存下來,但是一直奇怪為何只有一</SPAN>
view sourceprint?<SPAN style="FONT-SIZE: small">個.mht文件,打開來卻有圖片,現(xiàn)在知道保存為mht格式時(shí)就把網(wǎng)頁中的圖片全部轉(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í)很簡單,圖片文件到Base64String的轉(zhuǎn)換,只需要Convert類里面的一個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的話就要變通一下了,曲線救國~
從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)該就不會存在“超出預(yù)計(jì)范圍”的錯誤。轉(zhuǎn)換出問題應(yīng)該是跟原圖用Java或者其它語言生成的沒有關(guān)系的。因?yàn)閎ase64編碼應(yīng)該是一樣的。
作者:一修先生
出處:http://1971ruru.cnblogs.com
var flash = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAA......'
?。ㄐ“祝?lt;SPAN style="FONT-SIZE: small">這是我第一次認(rèn)識到base64的用場,記得以前保存網(wǎng)頁的時(shí)候,總習(xí)慣保存為.mht格式,因?yàn)檫@樣會把網(wǎng)頁中的圖片也保存下來,但是一直奇怪為何只有一</SPAN>
view sourceprint?<SPAN style="FONT-SIZE: small">個.mht文件,打開來卻有圖片,現(xiàn)在知道保存為mht格式時(shí)就把網(wǎng)頁中的圖片全部轉(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í)很簡單,圖片文件到Base64String的轉(zhuǎn)換,只需要Convert類里面的一個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的話就要變通一下了,曲線救國~
從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)該就不會存在“超出預(yù)計(jì)范圍”的錯誤。轉(zhuǎn)換出問題應(yīng)該是跟原圖用Java或者其它語言生成的沒有關(guān)系的。因?yàn)閎ase64編碼應(yīng)該是一樣的。
作者:一修先生
出處:http://1971ruru.cnblogs.com
相關(guān)文章
ASP.NET Core使用自定義驗(yàn)證屬性控制訪問權(quán)限詳解
這篇文章主要給大家介紹了關(guān)于ASP.NET Core使用自定義驗(yàn)證屬性控制訪問權(quán)限的相關(guān)資料,這是我們在日常工作中經(jīng)常會遇到的一個需求,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-10-10
ASP.NET Global.asax應(yīng)用程序文件簡介
Global.asax 文件,有時(shí)候叫做 ASP.NET 應(yīng)用程序文件,提供了一種在一個中心位置響應(yīng)應(yīng)用程序級或模塊級事件的方法。2009-03-03
從別人那拷下來的幾點(diǎn)Session使用的經(jīng)驗(yàn)
從別人那拷下來的幾點(diǎn)Session使用的經(jīng)驗(yàn)...2007-04-04
ASP.Net?Core讀取配置文件的三種方法小結(jié)
ASP.NET?Core支持多種格式的配置文件,如JSON、XML、INI等,本文就來介紹一下ASP.Net?Core讀取配置文件的三種方法,感興趣的可以了解一下2024-02-02
基于.Net?Core認(rèn)證授權(quán)方案之JwtBearer認(rèn)證
這篇文章介紹了基于.Net?Core認(rèn)證授權(quán)方案之JwtBearer認(rèn)證,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
Linux下以守護(hù)進(jìn)程方式運(yùn)行.NET6
這篇文章介紹了Linux下以守護(hù)進(jìn)程方式運(yùn)行.NET6,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12
DataList中TextBox onfocus調(diào)用后臺void靜態(tài)方法及獲取相應(yīng)行數(shù)
DataList中我放了一個TextBox 現(xiàn)在的問題是當(dāng)我光標(biāo)放到TextBox上的時(shí)候。如果讓onfocus調(diào)用后臺某一個void靜態(tài)方法并且在靜態(tài)方法里邊獲取光標(biāo)相應(yīng)的DataList的相應(yīng)行數(shù),本文介紹如何實(shí)現(xiàn),感興趣的朋友可以了解下2013-01-01

