用C#實現圖片檔案與base64string編碼解碼

來源:互聯網
上載者:User

背景:

  前些天在opera論壇裡面當了個flashblocker指令檔,顧名思義,就是把網頁中的flash給過濾了,過濾之後呢就會在原位置顯示一張圖片,以前用firefox時的flash過濾外掛程式也是這樣,而且顯示的圖片也一樣,一樣的難看,於是就想換換它。

  圖片當然是存在那個js檔案裡面,於是我就開啟了flashblocker.js,然後瀏覽一下,找到下面一句:  

 

var flash = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAA......'

 
(小白)這是我第一次認識到base64的用場,記得以前儲存網頁的時候,總習慣儲存為.mht格式,因為這樣會把網頁中的圖片也儲存下來,但是一直奇怪為何只有一個.mht檔案,開啟來卻有圖片,現在知道儲存為mht格式時就把網頁中的圖片全部轉成base64字串存在裡面了。

來自維基的百科:http://zh.wikipedia.org/zh-cn/Base64
實現:


其實很簡單,圖片檔案到Base64String的轉換,只需要Convert類裡面的一個ToBase64String方法即可

Image fromImage = Image.FromFile( txtImg.Text );MemoryStream stream = new MemoryStream();fromImage.Save( stream, imgFormat[extension] );txtString.Text = Convert.ToBase64String( stream.GetBuffer() );

  在這裡補充一下,貌似icon檔案是不能轉換的(自己實驗的結果),需要轉icon的話就要變通一下了,曲線救國~

  從Base64String提取圖片的話,需要Convert.FromBase64String()方法,

MemoryStream stream = new MemoryStream( Convert.FromBase64String( txtString.Text ) );bitmap img = new Bitmap( stream );img.Save( txtImg.Text );MessageBox.Show( "Completed!" );

貌似有些同志在轉換回來的時候出現問題,感覺應該是定義stream時出的問題,new的時候直接把轉換的byte[]給它,應該就不會存在“超出預計範圍”的錯誤。轉換出問題應該是跟原圖用Java或者其它語言產生的沒有關係的。因為base64編碼應該是一樣的。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.