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;}

转载于:https://www.cnblogs.com/cangqinglang/p/9483125.html

用js两张图片合并成一张图片相关推荐

  1. Windows10 把两张图片合并成一张图片

    Windows10把两张图片合并成一张图片 文章目录 Windows10把两张图片合并成一张图片 1. 背景 2. "画图"实现多图拼接 1. 背景 相比截图功能,在 Google ...

  2. OpenCV将两图片进行混合,达到两张图片合并成一张图片的效果

    1.概述 案例:将两张图片混合成一张图片,并且原图的元素要保留到同一张图片中. 2.示例图片 2.1.混合后的图片 2.2.原始的两张图片 3.示例代码 //将两张图片进行混合 #include &l ...

  3. 练习 | 01 | 把多张图片合并成一张图片

    1 实现方式 1.1 第一种方案 import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.F ...

  4. uniapp怎么使用canvas把两张图片合并成一张图片

    首先,在你的 vue 组件中引入 uni-canvas: <template><view class="canvas-container"><uni- ...

  5. cocos2dx-js RenderTexture 将多张图片合并成一张图片

    var sprite = new cc.Sprite("about_btn.png");var sprite2 = new cc.Sprite("add5.png&quo ...

  6. Java实现多张图片合并成一份PDF文件

    Java实现多张图片合并成一份PDF文件,一行两列展示 引入依赖包 <dependency><groupId>com.lowagie</groupId><ar ...

  7. 如何将SQL查询出的两列合并成一列显示,并用逗号隔开

    如何将SQL查询出的两列合并成一列显示,并用逗号隔开 先给出一个表 DROP TABLE IF EXISTS `apps`; CREATE TABLE `apps` (`id` int NOT NUL ...

  8. 两位数合并成一个四位数

    将两个两位数合并成一个四位数的方法是将这两个数分别乘上各自的十位数和个位数的权值(如第一个数乘以100,第二个数乘以10),然后相加.例如:12和34合并成1234.

  9. 无需下载软件怎么将多张图片组合成一张图片

    如今有很多的图片制作及编辑工具,比如美图秀秀和PS软件就是常见的可以编辑图片的软件,但是都需要安装下载,今天小编带来了一个免费图片编辑的网站,无须下载就可以将多张图片组合成一张图片,那怎么操作呢,一起 ...

  10. java 将图片分割成9张_将多张图片合并成一张,代码(可垂直和水平方向合并)...

    importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.IOException;importjavax.imageio. ...

最新文章

  1. 【linux】串口编程(三)——错误处理
  2. 一个神经元顶5到8层神经网络,深度学习的计算复杂度被生物碾压了
  3. C# 中 以 # 打头的 编码 是: html 编码解码地址 转换
  4. transient的作用和使用
  5. python正规教育机构-长沙python培训机构哪家好
  6. return 的使用
  7. MySQL Index详解
  8. PXE大批量安装Linux系统
  9. oracle分页查询加总数,oracle count 百万级 分页查询记要总数、总条数优化
  10. 别傻了,人家离职你也离
  11. 基于Windows Server 2019域环境体验Veeam ONE 10安装
  12. atitit.为什么笔记本跟个手机不能组装而pc可以
  13. [2018.10.15 T3] 数列
  14. svn安装以及初步使用
  15. 嵌入式Linux--使用libpng库解码png图片
  16. 微软2022年10月补丁周二修复了84个漏洞
  17. java方法建议不超过多少行,Java方法不应超过15行
  18. 学计算机科学与技术的考研方向,计算机科学与技术考研方向?
  19. 投资理财启蒙之《小狗钱钱》拆读
  20. 培训html源码,前端培训——html源码笔记

热门文章

  1. AngularJS - uib-datepicker-popup - 日期控件
  2. 如何面试软件工程师 看这篇就够了
  3. 手机端(移动端)UI框架整理
  4. 移动硬盘提示格式化的处理
  5. 陈坤发微博调侃 回应儿子生母话题
  6. python3.6 添加tab键功能
  7. 清理谷歌浏览器注册表_将谷歌浏览器的注册表彻底删除的方法
  8. bochs运行xp_在bochs虚拟机中安装WindowsXP (学习)
  9. 计算机考研828是什么意思,浙江大学828计算机程序设计基础考研复习经验
  10. 剑盾神秘礼物正在维护服务器,宝可梦剑盾神秘礼物获取途径一览