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 相关文章推荐
超级酷和最实用的jQuery实例收集(20个)
Apr 21 Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
Jun 20 Javascript
JavaScript实现梯形乘法表的方法
Apr 25 Javascript
javascript自定义滚动条实现代码
Apr 20 Javascript
angular ng-repeat数组中的数组实例
Feb 18 Javascript
JavaScript实现简单的双色球(实例讲解)
Jul 31 Javascript
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
Aug 17 Javascript
node.js操作MongoDB的实例详解
Oct 11 Javascript
vue.js 获取select中的value实例
Mar 01 Javascript
微信小程序实现上传图片裁剪图片过程解析
Aug 22 Javascript
layui对工具条进行选择性的显示方法
Sep 19 Javascript
小程序wx.getUserProfile接口的具体使用
Jun 02 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 调试利器debug_print_backtrace()
2012/07/23 PHP
PHP中将ip地址转成十进制数的两种实用方法
2013/08/15 PHP
PHP处理二进制数据的实现方法
2016/06/13 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
PHP echo()函数讲解
2019/02/15 PHP
PHP常见过waf webshell以及最简单的检测方法
2019/05/21 PHP
ASP中进行HTML数据及JS数据编码函数
2009/11/11 Javascript
javascript 基础篇1 什么是js 建立第一个js程序
2012/03/14 Javascript
JS定时器实例详细分析
2013/10/11 Javascript
详解JavaScript表单验证(E-mail 验证)
2016/03/31 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
2016/07/07 Javascript
angular2+nodejs实现图片上传功能
2017/03/27 NodeJs
JS奇技之利用scroll来监听resize详解
2017/06/15 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
Vue3.0数据响应式原理详解
2019/10/09 Javascript
ES6使用 Array.includes 处理多重条件用法实例分析
2020/03/02 Javascript
Cython 三分钟入门教程
2009/09/17 Python
python提示No module named images的解决方法
2014/09/29 Python
Python常用模块介绍
2014/11/21 Python
深入理解Python3 内置函数大全
2017/11/23 Python
django mysql数据库及图片上传接口详解
2019/07/18 Python
python爬虫 模拟登录人人网过程解析
2019/07/31 Python
opencv 获取rtsp流媒体视频的实现方法
2019/08/23 Python
Python封装成可带参数的EXE安装包实例
2019/08/24 Python
Python unittest基本使用方法代码实例
2020/06/29 Python
Python绘图实现台风路径可视化代码实例
2020/10/23 Python
人力资源行政经理自我评价
2013/10/23 职场文书
物业管理个人自我评价
2013/11/08 职场文书
战友聚会邀请函
2014/01/18 职场文书
城建学院毕业生自荐信
2014/01/31 职场文书
大学中国梦演讲稿
2014/04/23 职场文书
2015年八一建军节演讲稿
2015/03/19 职场文书
2015年班组长工作总结
2015/04/10 职场文书
Python控制台输出俄罗斯方块的方法实例
2021/04/17 Python
Python爬虫:从m3u8文件里提取小视频的正确操作
2021/05/14 Python
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫