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 相关文章推荐
破除一些网站复制、右键限制
Nov 04 Javascript
jQuery 表单验证插件formValidation实现个性化错误提示
Jun 23 Javascript
javascript正则表达式参数/g与/i及/gi的使用指南
Aug 27 Javascript
Javascript基础教程之for循环
Jan 18 Javascript
JavaScript日期类型的一些用法介绍
Mar 02 Javascript
jQuery鼠标事件汇总
Aug 30 Javascript
莱鸟介绍window.print()方法
Jan 06 Javascript
javascript插件开发的一些感想和心得
Feb 28 Javascript
浅析BootStrap中Modal(模态框)使用心得
Dec 24 Javascript
Angular X中使用ngrx的方法详解(附源码)
Jul 10 Javascript
小程序实现横向滑动日历效果
Oct 21 Javascript
Vue强制组件重新渲染的方法讨论
Feb 03 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 文章中的远程图片采集到本地的代码
2009/07/30 PHP
php查询ip所在地的方法
2014/12/05 PHP
javascript 单选框,多选框美化代码
2008/08/01 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
2015/11/13 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
2016/04/26 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
jQuery制作网页版选项卡
2016/07/28 Javascript
Highcharts学习之数据列
2016/08/03 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
2017/01/13 Javascript
canvas实现图像布局填充功能
2017/02/06 Javascript
JS实现的简单图片切换功能示例【测试可用】
2017/02/14 Javascript
js清除浏览器缓存的几种方法
2017/03/15 Javascript
react.js CMS 删除功能的实现方法
2017/04/17 Javascript
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
2017/08/09 jQuery
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
基于vue实现web端超大数据量表格的卡顿解决
2019/04/02 Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
python连接远程ftp服务器并列出目录下文件的方法
2015/04/01 Python
Python中在for循环中嵌套使用if和else语句的技巧
2016/06/20 Python
钉钉群自定义机器人消息Python封装的实例
2019/02/20 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
2019/04/25 Python
python pandas cumsum求累计次数的用法
2019/07/29 Python
python tkinter库实现气泡屏保和锁屏
2019/07/29 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
Python 生成VOC格式的标签实例
2020/03/10 Python
Python 如何创建一个简单的REST接口
2020/07/30 Python
python 实现端口扫描工具
2020/12/18 Python
CSS3实现王者匹配时的粒子动画效果
2019/04/12 HTML / CSS
平面设计求职信
2014/03/10 职场文书
幼儿园儿童节主持词
2014/03/21 职场文书
低碳日宣传活动总结
2014/07/09 职场文书
党支部三严三实对照检查材料思想汇报
2014/09/29 职场文书
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL
python 命令行传参方法总结
2021/05/25 Python
Mysql中一千万条数据怎么快速查询
2021/12/06 MySQL