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 相关文章推荐
Javascript 判断Flash是否加载完成的代码
Apr 12 Javascript
JS 图片缩放效果代码
Jun 09 Javascript
深入理解JavaScript系列(42):设计模式之原型模式详解
Mar 04 Javascript
JavaScript实现自动变换表格边框颜色
May 08 Javascript
浅谈javascript中的Function和Arguments
Aug 30 Javascript
浅谈js中的引用和复制(传值和传址)
Sep 18 Javascript
Vue 短信验证码组件开发详解
Feb 14 Javascript
layer弹窗插件操作方法详解
May 19 Javascript
关于jQuery里prev()的简单操作代码
Oct 27 jQuery
在vue.js中使用JSZip实现在前端解压文件的方法
Sep 05 Javascript
详解js加减乘除精确计算
Mar 19 Javascript
vue中添加与删除关键字搜索功能
Oct 12 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 Document 代码注释规范
2009/04/13 PHP
php 传值赋值与引用赋值的区别
2010/12/29 PHP
php多个字符串替换成同一个的解决方法
2013/06/18 PHP
简单的php缓存类分享     php缓存机制
2014/01/22 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
2014/11/29 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
JS类定义原型方法的两种实现的区别评论很多
2007/09/12 Javascript
js实现日期级联效果
2014/01/23 Javascript
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
2015/09/20 Javascript
利用jQuery中的ajax分页实现代码
2016/02/25 Javascript
javascript html5 canvas实现可拖动省份的中国地图
2016/03/11 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
2016/06/09 Javascript
浅谈jQuery中的checkbox问题
2016/08/10 Javascript
微信小程序 触控事件详细介绍
2016/10/17 Javascript
node下使用UglifyJS压缩合并JS文件的方法
2018/03/07 Javascript
jQuery超简单遮罩层实现方法示例
2018/09/06 jQuery
KOA+egg.js集成kafka消息队列的示例
2018/11/09 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
2018/11/21 Javascript
Vue 使用Props属性实现父子组件的动态传值详解
2019/11/13 Javascript
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
2020/03/17 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
Vue项目打包部署到apache服务器的方法步骤
2021/02/01 Vue.js
Python本地与全局命名空间用法实例
2015/06/16 Python
python中常用的九种预处理方法分享
2016/09/11 Python
VSCode Python开发环境配置的详细步骤
2019/02/22 Python
Django REST framework 如何实现内置访问频率控制
2019/07/23 Python
解析python 类方法、对象方法、静态方法
2020/08/15 Python
美国珠宝网上商店:Jeulia
2016/09/01 全球购物
JSF的标签库有哪些
2012/04/27 面试题
工程师自我评价怎么写
2013/09/19 职场文书
大学活动策划书范文
2014/01/10 职场文书
人事行政经理岗位职责
2014/06/18 职场文书
大学毕业生推荐信
2014/07/09 职场文书
2014年党风廉政建设工作总结
2014/11/19 职场文书
中学语文教学反思
2016/02/16 职场文书
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS