base64轉換成圖片

前端代碼JS: 前端圖片爲canvsa繪圖轉base64格式前端

function putTextInfo() {
var canvasImg = painting.canvas.toDataURL('image/png', 0.8).substring(22); // canvas圖片.草圖
var cName = $("#username").val();//客戶姓名
var provinceid = $("#provice").val();//客戶地址,省id
var cityid = $("#city").val();//客戶地址,市id
var countyid = $("#county").val();//客戶地址,縣id
var townid = $("#town").val();//客戶地址,鎮id
var villageid = $("#village").val();//客戶地址,村id
var cAddress = $('.detailAddress').val();//詳細地址
var shopName = $('.shopname').val();//店鋪名稱
var cTell = $('.phonenum').val();//聯繫電話
var weiXin = $('.wxnum').val();//微信號碼
var remarks = $('.remark').val();//備註信息
var idCard = $('.idnum').val();//身份證號
var layerhight = $('.layerh').val();//層高
var beamunder = $('.ldown').val();//梁下
var beanover = $('.lup').val();//樑上
var officecolor = $('.officeColor').val();//辦公區色系
var lovelycolor = $('.beautyColor').val();//美容區色系
var machinecolor = $('.machineColor').val();//機修區色系
var officelight = $('.officeModelling').val();//辦公區燈光造型
var lovelylight = $('.beautyModelling').val();//美容區燈光造型
var machinelight = $('.machineModelling').val();//機修區燈光造型
var sign = $('.sign').val();//招牌
var yesorBasement = $(":radio[name=yesorBasement]:checked").val();//是否有地下室,1有/2無
var yesorGas = $(":radio[name=yesorGas]:checked").val();//是否有水管或煤氣管道:1有2沒有
var dtId = $("#color-select").val();//汽保店類型
var length = $('.length').val();//場地長度
var width = $('.width').val();//場地寬度
var otherinfo = $('.width').val();//其餘要求
$.ajax({
type: "POST",//請求類型
url: path+"/draw/putSketch",//請求的url
data:{canvasImg:canvasImg,cName:cName,provinceid:provinceid,cityid:cityid,countyid:countyid,townid:townid,villageid:villageid,cAddress:cAddress,shopName:shopName,cTell:cTell,weiXin:weiXin,remarks:remarks,idCard:idCard,layerhight:layerhight,beamunder:beamunder,beanover:beanover,officecolor:officecolor,lovelycolor:lovelycolor,machinecolor:machinecolor,officelight:officelight,lovelylight:lovelylight,machinelight:machinelight,sign:sign,yesorBasement:yesorBasement,yesorGas:yesorGas,dtId:dtId,length:length,width:width,otherinfo:otherinfo},//請求參數
dataType: "json",//ajax接口(請求url)返回的數據類型
async : false, //同步方式
success: function (data) {//data:返回數據(json對象)
if(data.message=="error"){
errerInformation(data.data);
}
if(data.message=="style"){
errerInformation(data.data,path+"/draw/matchDesignSketch");
}
if(data.message=="noStyle"){
errerInformation("請選擇裝修風格!",path+"/decorationStyle/styleList");
}
}
});
}

後臺代碼:
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import java.io.*;

/**
* @Auther: lanhaifeng
* @Date: 2018/9/20 0020 16:07
* @Description:base64,圖片互轉工具類
*/
public class Base64ConvertImageUtil {


/**
* base64字符串轉化成圖片
* 對字節數組字符串進行Base64解碼並生成圖片
* @param imgStr base64字符碼
* @param folderName 文件類型文件夾名
* @param subfolderName 文件類型子文件名,注意前綴要+「/」
* @param fileName 文件名稱,注意前綴要加「/」
* @return
*/
public static String GenerateImage(String imgStr,String folderName,String subfolderName, String fileName) {
String result=null;
if (imgStr != null && !("").equals(imgStr) ) {
//解決後臺接收base64編碼出現空格的問題,核心問題
String sst = imgStr.replace(" ", "+");
byte[] b;
try {
b = new BASE64Decoder().decodeBuffer(sst);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {
// 調整異常數據
b[i] += 256;
}
}
String savePath = FolderPathUtil.SAVE_DATABASE_PATH + folderName + subfolderName + "/" + fileName;//數據庫保存文件路徑
//生成png圖片路徑
String realPath = FolderPathUtil.ABSOLUTE_PATH + FolderPathUtil.SAVE_DATABASE_PATH + folderName + subfolderName;//文件物理保存路徑
File file=new File(realPath);
if(!file.exists()){
file.mkdirs();
}
OutputStream os = new FileOutputStream(realPath+"/"+fileName);
os.write(b);
os.flush();
os.close();
result = savePath;//成功返回路徑
} catch (IOException e2) {
e2.printStackTrace();
}
}
return result;
}


/**
* 圖片轉化成base64字符串
* @param imgFile 待處理的圖片全路徑,注意實際路徑要加:E:/images/
* @return
*/
public static String GetImageStr(String imgFile) {
imgFile="E:/images/"+imgFile;//物理儲存路徑=物理盤符+數據庫存儲路徑
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編碼過的字節數組字符串
}

}

controller層接收用字符串
@RequestParam(required=false,value = "canvasImg") String canvasImg
相關文章
相關標籤/搜索