Java實現base64圖片轉換為base64字串。base64字串轉換圖片 之間的互相轉換,並儲存在本地。
阿新 • • 發佈:2019-01-25
java實現Base64資料圖片和資料間的互相轉換
首先建立類。寫兩個方法:
- 圖片轉base64字串方法:GetImageStr();
- 字串轉為圖片方法:GenerateImage();
package jar;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class Base64
{
//圖片轉化成base64字串
public static String GetImageStr(String imageName)
{//將圖片檔案轉化為位元組陣列字串,並對其進行Base64編碼處理
String imgFile = imageName;//待處理的圖片
InputStream in = null;
byte[] data = null;
//讀取圖片位元組陣列
try
{
in = new FileInputStream(imgFile);
data = new byte[in.available()];
in.read(data);
in.close();
}
catch (IOException e)
{
e.printStackTrace();
}
//對位元組陣列Base64編碼
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(data);//返回Base64編碼過的位元組陣列字串
}
//base64字串轉化成圖片
public static boolean GenerateImage(String imgStr,String imageName)
{ //對位元組陣列字串進行Base64解碼並生成圖片
if (imgStr == null) //影象資料為空
return false;
BASE64Decoder decoder = new BASE64Decoder();
try
{
//Base64解碼
byte[] b = decoder.decodeBuffer(imgStr);
for(int i=0;i<b.length;++i)
{
if(b[i]<0)
{//調整異常資料
b[i]+=256;
}
}
//生成jpeg圖片
String imgFilePath = imageName;//新生成的圖片
OutputStream out = new FileOutputStream(imgFilePath);
out.write(b);
out.flush();
out.close();
return true;
}
catch (Exception e)
{
return false;
}
}
}
2.Main方法測試:
package jar;
public class Test {
public static void main(String[] args)
{
//呼叫把圖片轉換為base64 資料方法 引數是需要轉base64圖片的路徑
String strImg = Base64.GetImageStr("d://demo.jpg");
//輸出base64 資料
System.out.println("data:image/png;base64,"+strImg);
//呼叫把base64 資料轉換為圖片方法 第一個引數是字串資料,第二個是轉為圖片存放的路徑
Base64.GenerateImage(strImg, "d://aaxx.jpg");
}
}
3.執行結果:
- 圖片轉換為base64資料輸出結果:
- base64 資料轉換為圖片方法輸出結果:生成圖片