C#和JAVA實現圖片和BASE64互轉
Base64編碼在Web方面有很多應用,譬如在URL、電子郵件方面。有種比較常見的情境就是將圖片轉換為Base64字串進行儲存。.Net和Java都可以實現此種情境。.Net Framework也提供了現成的功能類(System.Convert)用於將位元據轉換為Base64字串。將圖片轉化為Base64字串的流程是:首先使用BinaryFormatter將圖片檔案序列化為位元據,然後使用Convert類的ToBase64String方法。將Base64字串轉換為圖片的流程正好相反:使用Convert類的FromBase64String得到圖片檔案的位元據,然後使用BinaryFormatter還原序列化方法。
/// /// 將圖片資料轉換為Base64字串 /// /// /// private void ToBase64(object sender, EventArgs e) { Image img = this.pictureBox.Image; BinaryFormatter binFormatter = new BinaryFormatter(); MemoryStream memStream = new MemoryStream(); binFormatter.Serialize(memStream, img); byte[] bytes = memStream.GetBuffer(); string base64 = Convert.ToBase64String(bytes); this.richTextBox.Text = base64; } /// /// 將Base64字串轉換為圖片 /// /// /// private void ToImage(object sender, EventArgs e) { string base64 = this.richTextBox.Text; byte[] bytes = Convert.FromBase64String(base64); MemoryStream memStream = new MemoryStream(bytes); BinaryFormatter binFormatter = new BinaryFormatter(); Image img = (Image)binFormatter.Deserialize(memStream); this.pictureBox.Image = img; }
Java方面實現為:需要匯入sun.misc.BASE64Decoder.jar包。實現代碼為:
package com.axbsec.util;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileReader;import java.io.IOException;import java.io.OutputStream;import Decoder.BASE64Decoder;public class StringToImg { public static final int NUMBER=2833; public static void main(String[] args) { File fPhotos=new File("C:/Users/Desktop/photos.txt"); File fIDCards=new File("C:/Users /Desktop/idcards.txt"); BufferedReader reader=null; BufferedReader reader1=null; String[] fPhotosStr; String[] fIDCardsStr; try { reader=new BufferedReader(new FileReader(fPhotos)); reader1=new BufferedReader(new FileReader(fIDCards)); fPhotosStr = new String[NUMBER]; fIDCardsStr = new String[NUMBER]; String tempString =null; String tempString1=null; int line=0; int line1=0; while ((tempString=reader.readLine())!=null) { fPhotosStr[line]=tempString; line++; } reader.close(); while ((tempString1=reader1.readLine())!=null) { fIDCardsStr[line1]=tempString1; line1++; } reader1.close(); for(int i=0;i
通過這兩種平台圖片轉換為Base64的方法展示,就可以輕易的稍作修改完成將圖片儲存的業務情境了。