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中的Screen屏幕对象
Jan 16 Javascript
使用jQuery的将桌面应用程序引入浏览器
Nov 19 Javascript
jQuery LigerUI 使用教程入门篇
Jan 18 Javascript
jquery mobile的触控点击事件会多次触发问题的解决方法
May 08 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
Oct 16 Javascript
浅谈document.write()输出样式
May 07 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
Aug 27 Javascript
vue中的非父子间的通讯问题简单的实例代码
Jul 19 Javascript
JS中Map和ForEach的区别
Feb 05 Javascript
angular将html代码输出为内容的实例
Sep 30 Javascript
vue-devtools的安装和使用步骤详解
Oct 17 Javascript
vue使用exif获取图片经纬度的示例代码
Dec 11 Vue.js
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数据库连接时容易出错的特殊符号问题
2010/09/01 PHP
php表单转换textarea换行符的方法
2010/09/10 PHP
php源码分析之DZX1.5加密解密函数authcode用法
2015/06/17 PHP
PHP简单获取及判断提交来源的方法
2016/04/22 PHP
关于Laravel Route重定向的一个注意点
2017/01/16 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
jquery创建div 实现代码
2009/04/27 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
jquery实现保存已选用户
2014/07/21 Javascript
jquery插件jSignature实现手动签名
2015/05/04 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
javascript针对不确定函数的执行方法
2015/12/16 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
2016/08/05 Javascript
微信小程序表单验证功能完整实例
2017/12/01 Javascript
vue中如何去掉空格的方法实现
2018/11/09 Javascript
vue实现输入框自动跳转功能
2020/05/20 Javascript
python批量下载图片的三种方法
2013/04/22 Python
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
python3 与python2 异常处理的区别与联系
2016/06/19 Python
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
2016/06/29 Python
分享给Python新手们的几道简单练习题
2017/09/21 Python
python版简单工厂模式
2017/10/16 Python
python表格存取的方法
2018/03/07 Python
Django models文件模型变更错误解决
2020/05/11 Python
pandas 像SQL一样使用WHERE IN查询条件说明
2020/06/05 Python
Python3 搭建Qt5 环境的方法示例
2020/07/16 Python
Python 串口通信的实现
2020/09/29 Python
MONNIER Frères英国官网:源自巴黎女士奢侈品配饰电商平台
2018/12/06 全球购物
高等教育专业自荐信范文
2014/03/26 职场文书
列车乘务员工作不细心检讨书
2014/10/07 职场文书
先进员工事迹材料
2014/12/20 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
高中生物教学反思
2016/02/20 职场文书
Python利用folium实现地图可视化
2021/05/23 Python
能让Python提速超40倍的神器Cython详解
2021/06/24 Python
MySQL事务的ACID特性以及并发问题方案
2022/07/15 MySQL