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 相关文章推荐
Whatever:hover 无需javascript让IE支持丰富伪类
Jun 29 Javascript
asp.net刷新本页面的六种方法总结
Jan 07 Javascript
JQuery+CSS实现图片上放置按钮的方法
May 29 Javascript
javaScript中slice函数用法实例分析
Jun 08 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
Feb 18 Javascript
AngularJS用户选择器指令实例分析
Nov 04 Javascript
微信小程序 开发经验整理
Feb 15 Javascript
详解Weex基于Vue2.0开发模板搭建
Mar 20 Javascript
jQuery ajax请求struts action实现异步刷新
Apr 19 jQuery
使用Browserify来实现CommonJS的浏览器加载方法
May 14 Javascript
基于jQuery实现的单行公告活动轮播效果
Aug 23 jQuery
微信小程序实现底部弹出框
Nov 18 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
短波问题解答
2021/02/28 无线电
PHP分页显示制作详细讲解
2008/11/19 PHP
从新浪弄下来的全屏广告代码 与使用说明
2007/03/15 Javascript
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
JavaScript极简入门教程(二):对象和函数
2014/10/25 Javascript
如何使用jquery easyui创建标签组件
2015/11/18 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
2016/04/28 Javascript
深入分析javascript中console命令
2016/08/14 Javascript
jQuery中的AjaxSubmit使用讲解
2016/09/25 Javascript
js实现将json数组显示前台table中
2017/01/10 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
2017/02/14 Javascript
关于 angularJS的一些用法
2017/11/29 Javascript
开发Vue树形组件的示例代码
2017/12/21 Javascript
vue如何在项目中调用腾讯云的滑动验证码
2020/07/15 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
[55:48]VGJ.S vs TNC Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python版的文曲星猜数字游戏代码
2013/09/02 Python
python抓取网页时字符集转换问题处理方案分享
2014/06/19 Python
Python类装饰器实现方法详解
2018/12/21 Python
Python数据类型之List列表实例详解
2019/05/08 Python
Python values()与itervalues()的用法详解
2019/11/27 Python
美国学校校服,儿童和婴儿服装:Cookie’s Kids
2016/10/14 全球购物
中国排名第一的外贸销售网站:LightInTheBox.com(兰亭集势)
2016/10/28 全球购物
naturalizer加拿大官网:美国娜然女鞋
2017/04/04 全球购物
Booking.com荷兰:全球酒店网上预订
2017/08/22 全球购物
测绘工程专业个人自我评价
2013/12/01 职场文书
招聘单位介绍信
2014/01/14 职场文书
揠苗助长教学反思
2014/02/04 职场文书
2014年党员自我评议总结
2014/09/23 职场文书
社会实践活动总结
2015/02/05 职场文书
老公婚前保证书
2015/02/28 职场文书
2015年校务公开工作总结
2015/05/26 职场文书
上班旷工检讨书
2015/08/15 职场文书
PHP设计模式(观察者模式)
2021/07/07 PHP
解决Mysql多行子查询的使用及空值问题
2022/01/22 MySQL