js+canvas实现两张图片合并成一张图片的方法


Posted in Javascript onNovember 01, 2019

本文实例讲述了js+canvas实现两张图片合并成一张图片的方法。分享给大家供大家参考,具体如下:

JS和canvas的合成方式

function drawAndShareImage(){
  var canvas = document.createElement("canvas");
  canvas.width = 700;
  canvas.height = 700;
  var context = canvas.getContext("2d");
  context.rect(0 , 0 , canvas.width , canvas.height);
  context.fillStyle = "#fff";
  context.fill();
  var myImage = new Image();
  myImage.src = "./2.png";  //背景图片 你自己本地的图片或者在线图片
  myImage.crossOrigin = 'Anonymous';
  myImage.onload = function(){
    context.drawImage(myImage , 0 , 0 , 700 , 700);
    context.font = "60px Courier New";
    context.fillText("我是文字",350,450);
    var myImage2 = new Image();
    myImage2.src = "./1.png";  //你自己本地的图片或者在线图片
    myImage2.crossOrigin = 'Anonymous';
    myImage2.onload = function(){
      context.drawImage(myImage2 , 175 , 175 , 225 , 225);
      var base64 = canvas.toDataURL("image/png"); //"image/png" 这里注意一下
      var img = document.getElementById('avatar');
      // document.getElementById('avatar').src = base64;
      img.setAttribute('src' , base64);
    }
  }
}

PS:在线图片和本地图片都要注意下跨越的问题,最好放在服务器上测试。

java的实现方式

public static String generateCode(String codeUrl, Integer userId, String userName) {
 Font font = new Font("微软雅黑", Font.PLAIN, 30);// 添加字体的属性设置
 String projectUrl = PathKit.getWebRootPath() + "/before/codeImg/";
 String imgName = projectUrl + userId + ".png";
 try {
 // 加载本地图片
 String imageLocalUrl = projectUrl + "weixincode2.png";
 BufferedImage imageLocal = ImageIO.read(new File(imageLocalUrl));
 // 加载用户的二维码
 BufferedImage imageCode = ImageIO.read(new URL(codeUrl));
 // 以本地图片为模板
 Graphics2D g = imageLocal.createGraphics();
 // 在模板上添加用户二维码(地址,左边距,上边距,图片宽度,图片高度,未知)
 g.drawImage(imageCode, 575, imageLocal.getHeight() - 500, 350, 350, null);
 // 设置文本样式
 g.setFont(font);
 g.setColor(Color.BLACK);
 // 截取用户名称的最后一个字符
 String lastChar = userName.substring(userName.length() - 1);
 // 拼接新的用户名称
 String newUserName = userName.substring(0, 1) + "**" + lastChar + " 的邀请二维码";
 // 添加用户名称
 g.drawString(newUserName, 620, imageLocal.getHeight() - 530);
 // 完成模板修改
 g.dispose();
 // 获取新文件的地址
 File outputfile = new File(imgName);
 // 生成新的合成过的用户二维码并写入新图片
 ImageIO.write(imageLocal, "png", outputfile);
 } catch (Exception e) {
 e.printStackTrace();
 }
 // 返回给页面的图片地址(因为绝对路径无法访问)
 imgName = Constants.PROJECT_URL + "codeImg/" + userId + ".png";
 return imgName;
}

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
用jscript启动sqlserver
Jun 21 Javascript
node.js 开发指南 ? Node.js 连接 MySQL 并进行数据库操作
Jul 29 Javascript
JQuery设置获取下拉菜单某个选项的值(比较全)
Aug 05 Javascript
JavaScript实现当网页加载完成后执行指定函数的方法
Mar 21 Javascript
JQuery自动触发事件的方法
Jun 13 Javascript
如何实现JavaScript动态加载CSS和JS文件
Dec 28 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
Mar 25 Javascript
iframe中使用jquery进行查找的方法【案例分析】
Jun 17 Javascript
详解angularJs中关于ng-class的三种使用方式说明
Jun 02 Javascript
vue的事件绑定与方法详解
Aug 16 Javascript
详解js访问对象的属性和方法
Oct 25 Javascript
js实现数字从零慢慢增加到指定数字示例
Nov 07 Javascript
JS中自定义事件的使用与触发操作实例分析
Nov 01 #Javascript
vue设置动态请求地址的例子
Nov 01 #Javascript
在vue中利用全局路由钩子给url统一添加公共参数的例子
Nov 01 #Javascript
js实现旋转的星空效果
Nov 01 #Javascript
浅谈小程序globalData的那些事儿
Nov 01 #Javascript
小程序怎样让wx.navigateBack更好用的方法实现
Nov 01 #Javascript
vue实现配置全局访问路径头(axios)
Nov 01 #Javascript
You might like
一个php作的文本留言本的例子(一)
2006/10/09 PHP
php 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
php显示时间常用方法小结
2015/06/05 PHP
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
php使用自定义函数实现汉字分割替换功能示例
2017/01/30 PHP
解决laravel session失效的问题
2019/10/14 PHP
html下载本地
2006/06/19 Javascript
中国地区三级联动下拉菜单效果分析
2012/11/15 Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
2014/03/21 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
2015/11/26 Javascript
nodejs 中模拟实现 emmiter 自定义事件
2016/02/22 NodeJs
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
easyui form validate总是返回false的原因及解决方法
2016/11/07 Javascript
浅谈javascript中的 “ && ” 和 “ || ”
2017/02/02 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
JavaScript数据结构之优先队列与循环队列实例详解
2017/10/27 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
4个顶级JavaScript高级文本编辑器
2018/10/10 Javascript
Layui Form 自定义验证的实例代码
2019/09/14 Javascript
js原生map实现的方法总结
2020/01/19 Javascript
JavaScript实现栈结构Stack过程详解
2020/03/07 Javascript
numpy中loadtxt 的用法详解
2018/08/03 Python
python @propert装饰器使用方法原理解析
2019/12/25 Python
如何在django中运行scrapy框架
2020/04/22 Python
Python如何爬取b站热门视频并导入Excel
2020/08/10 Python
CSS3中Transform动画属性用法详解
2016/07/04 HTML / CSS
上班离岗检讨书
2014/01/27 职场文书
绿色环保演讲稿
2014/05/10 职场文书
会计学专业求职信
2014/07/17 职场文书
学雷锋活动倡议书
2014/08/30 职场文书
有关九一八事变的演讲稿
2014/09/14 职场文书
建筑质检员岗位职责
2015/04/08 职场文书