前端代码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
												

base64转换成图片的更多相关文章

  1. PHP base64转换成图片

    获取base64文件 $image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASIAAAEiCAYAAABdvt+2AAAgAElEQV ...

  2. js怎么将 base64转换成图片

    //获取数组最后一个元素 let hasFiles = files[Object.keys(files).pop()] // 参考上面的图片 let file = hasFiles.url let n ...

  3. 使用的是html5的canvas将文字转换成图片

    当前功能的运用场景是:用户需要传文件给他人,在用户选择文件之后需要显示一个文件图标和所选文件的名称. 当前代码部分是摘自网上,但是已经忘记在什么地方获取的,如有侵权联系小弟后自当删除. 注意:必须在h ...

  4. C#技术分享【PDF转换成图片——13种方案】(2013-07-25重新整理)

    原文:C#技术分享[PDF转换成图片--13种方案](2013-07-25重新整理) 重要说明:本博已迁移到 石佳劼的博客,有疑问请到 文章新地址 留言!!! 写在最前面:为了节约大家时间,撸主把最常 ...

  5. C#技术分享【PDF转换成图片——11种方案】

    1.[iTextSharp.dll],C# 开源PDF处理工具,可以任意操作PDF,并可以提取PDF中的文字和图片,但不能直接将PDF转换成图片. DLL和源码 下载地址:http://downloa ...

  6. 批量将网页转换成图片或PDF文档技巧分享

    工作中我们有时要将一些批量的网页转换成图片或者PDF文档格式,尽管多数浏览器具有滚动截屏或者打印输出PDF文档功能.可是假设有几十上百张网页须要处理,那也是要人命的.所以我一直想找一款可以批量处理该工 ...

  7. WPF中实现图片文件转换成Visual对象,Viewport3D对象转换成图片

    原文:WPF中实现图片文件转换成Visual对象,Viewport3D对象转换成图片 1.图片文件转换成Visual对象 private Visual CreateVisual(string imag ...

  8. Gson字符串编码,字符串转换成图片保存,二进制转换成图片保存

    import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.File; import ...

  9. Android View转换成图片保存

    package zhangphil.viewtoimage; import java.io.File;import java.io.FileOutputStream; import android.o ...

随机推荐

  1. centos安装php7.2环境

    centos安装php7.2环境 安装apache服务 yum -y install httpd 首先获取rpm: rpm -Uvh https://dl.fedoraproject.org/pub/ ...

  2. Awesome-VR

    Google-tool Marzipano是现代网络的360°媒体查看器.—— Google官网  文档   案例    源码 WebVR-Frameworks ReactVR - Build VR ...

  3. HDOJ 5666//快速积,推公式

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5666 题意:给一条直线x+y=q,在(0,0)往x+y=q上面的整数点连线,x+y=q与x,y轴截成的三角 ...

  4. open-falcon详解

    先扔出一张官方的架构图, agent是用于采集机器的监控指标,然后每60秒就会push给transfer,agent与transfer是建立了长连接的,传输速度会比较快: transfer接受到数据后 ...

  5. cf245H Queries for Number of Palindromes (manacher+dp)

    首先马拉车一遍(或者用hash),再做个前缀和处理出f[i][j]表示以j为右端点,左端点在[i,j]的回文串个数 然后设ans[i][j]是[i,j]之间的回文串个数,那就有ans[i][j]=an ...

  6. 编写高质量代码:改善Java程序的151个建议 --[52~64]

    编写高质量代码:改善Java程序的151个建议 --[52~64] 推荐使用String直接量赋值 Java为了避免在一个系统中大量产生String对象(为什么会大量产生,因为String字符串是程序 ...

  7. ftp 两台服务器传输文件 apache

    import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.OutputS ...

  8. OpenLayers学习笔记(二)— QML与HTML通信之画图

    作者: 狐狸家的鱼 Github: 八至 本文链接:QML与 HTML通信—实现QML中点击功能按钮在地图上画图 一.HTML-map var drarGraphic; var drawType;fu ...

  9. 第十六节,使用函数封装库tf.contrib.layers

    这一节,介绍TensorFlow中的一个封装好的高级库,里面有前面讲过的很多函数的高级封装,使用这个高级库来开发程序将会提高效率. 我们改写第十三节的程序,卷积函数我们使用tf.contrib.lay ...

  10. myBatis:not bind 问题

    [13/07/16 03:25:44:044 CST] localhost-startStop-1 INFO pool.DruidDataSource: {dataSource-1} closed [ ...