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
base64转换成图片的更多相关文章
- PHP base64转换成图片
获取base64文件 $image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASIAAAEiCAYAAABdvt+2AAAgAElEQV ...
- js怎么将 base64转换成图片
//获取数组最后一个元素 let hasFiles = files[Object.keys(files).pop()] // 参考上面的图片 let file = hasFiles.url let n ...
- 使用的是html5的canvas将文字转换成图片
当前功能的运用场景是:用户需要传文件给他人,在用户选择文件之后需要显示一个文件图标和所选文件的名称. 当前代码部分是摘自网上,但是已经忘记在什么地方获取的,如有侵权联系小弟后自当删除. 注意:必须在h ...
- C#技术分享【PDF转换成图片——13种方案】(2013-07-25重新整理)
原文:C#技术分享[PDF转换成图片--13种方案](2013-07-25重新整理) 重要说明:本博已迁移到 石佳劼的博客,有疑问请到 文章新地址 留言!!! 写在最前面:为了节约大家时间,撸主把最常 ...
- C#技术分享【PDF转换成图片——11种方案】
1.[iTextSharp.dll],C# 开源PDF处理工具,可以任意操作PDF,并可以提取PDF中的文字和图片,但不能直接将PDF转换成图片. DLL和源码 下载地址:http://downloa ...
- 批量将网页转换成图片或PDF文档技巧分享
工作中我们有时要将一些批量的网页转换成图片或者PDF文档格式,尽管多数浏览器具有滚动截屏或者打印输出PDF文档功能.可是假设有几十上百张网页须要处理,那也是要人命的.所以我一直想找一款可以批量处理该工 ...
- WPF中实现图片文件转换成Visual对象,Viewport3D对象转换成图片
原文:WPF中实现图片文件转换成Visual对象,Viewport3D对象转换成图片 1.图片文件转换成Visual对象 private Visual CreateVisual(string imag ...
- Gson字符串编码,字符串转换成图片保存,二进制转换成图片保存
import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.File; import ...
- Android View转换成图片保存
package zhangphil.viewtoimage; import java.io.File;import java.io.FileOutputStream; import android.o ...
随机推荐
- 不同版本的Chrom浏览器对应的ChromDriver的版本
附chromedriver与chrome的对应关系表: chromedriver版本 支持的Chrome版本 v2.40 v66-68 v2.39 v66-68 v2.38 v65-67 v2.37 ...
- 解决Eclipse每次修改完代码后需要先Clean,不然修改的代码无效
工具栏 Project-->Build Automatically 勾选上即可
- LOJ #2142. 「SHOI2017」相逢是问候(欧拉函数 + 线段树)
题意 给出一个长度为 \(n\) 的序列 \(\{a_i\}\) 以及一个数 \(p\) ,现在有 \(m\) 次操作,每次操作将 \([l, r]\) 区间内的 \(a_i\) 变成 \(c^{a_ ...
- 【BZOJ2125】最短路(仙人掌,圆方树)
[BZOJ2125]最短路(仙人掌,圆方树) 题面 BZOJ 求仙人掌上两点间的最短路 题解 终于要构建圆方树啦 首先构建出圆方树,因为是仙人掌,和一般图可以稍微的不一样 直接\(tarjan\)缩点 ...
- 【LOJ#6072】苹果树(矩阵树定理,折半搜索,容斥)
[LOJ#6072]苹果树(矩阵树定理,折半搜索,容斥) 题面 LOJ 题解 emmmm,这题似乎猫讲过一次... 显然先\(meet-in-the-middle\)搜索一下对于每个有用的苹果数量,满 ...
- JS基本类型-引用类型-深浅拷贝
在JavaScript中变量包含两种类型的值:一种是基本类型,一种是引用类型. 基本类型包括:数值.字符串.null.undefined.布尔值引用类型包括:对象.数组.函数.正则… 补充: null ...
- Vue中的slot内容分发
①概述: 简单来说,假如父组件需要在子组件内放一些DOM,那么这些DOM是显示.不显示.在哪个地方显示.如何显示,就是slot分发负责的活. ②默认情况下 父组件在子组件内套的内容,是不显示的. 例如 ...
- 【原创】线段树query模板对比! 新手线段树的一个容易出错的问题!!因为我就糊涂了一整天.......
我们解决问题的最好方法就是拿实例来举例子 我们来看tyvj1038或计蒜客 “管家的忠诚” 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管 ...
- http_proxy_module模块常用参数
Nginx的upstream模块相当于是建立一个函数库一样,把后端的服务器地址放在了一个池子里,而proxy模块则是从这个池子里调用了这些服务器. http_proxy_module模块常用参数: p ...
- servlet 上下文
一.应用需求: 如何统计网站在线人数? 使用ServletContext. 二.ServletContext详解: 1.是不同于session和cookie,是可以让所有客户端共同访问的内容,是在服务 ...