用js两张图片合并成一张图片 | 下载功能

html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>用js两张图片合并成一张图片 | 下载功能</title>
  </head>
  <body>
    <img id="avatar" />
    <button id="btn">下载图片</button>
    <script src="./js-canvas.js"></script>
  </body>
</html>

js

window.base64 = null;
let imgArr = [
  "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fup.enterdesk.com%2F2021%2Fedpic%2Fc4%2F9f%2F09%2Fc49f090757360f843141fe2bab2cfc8f_1.jpg&refer=http%3A%2F%2Fup.enterdesk.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1647758998&t=a682086df49953b7fce64d1991b79e16",
  "https://lf6-creative.dailygn.com/obj/tmg-gameres-static/build-template-assets/314fff7c7000ab4ef0c11187623697f0/comeon_avatar_frame.png",
];
function drawAndShareImage(img1, img2) {
  let canvas = document.createElement("canvas");
  let width = 700;
  let height = 700;
  canvas.width = width;
  canvas.height = height;
  let context = canvas.getContext("2d");

  context.rect(0, 0, canvas.width, canvas.height);
  context.fillStyle = "#fff";
  context.fill();

  let myImage = new Image();
  myImage.src = img1; //背景图片  你自己本地的图片或者在线图片
  myImage.crossOrigin = "Anonymous";

  myImage.onload = function () {
    context.drawImage(myImage, 90, 90, 520, 520);

    // let base64 = canvas.toDataURL("image/png"); //"image/png" 这里注意一下
    // window.base64 = base64;
    // let img = document.getElementById("avatar");
    // //   document.getElementById("avatar").src = base64;
    // img.setAttribute("src", window.base64);

    let myImage2 = new Image();
    myImage2.src = img2; //你自己本地的图片或者在线图片
    myImage2.crossOrigin = "Anonymous";

    myImage2.onload = function () {
      context.drawImage(myImage2, 0, 0, 700, 700);
      let base64 = canvas.toDataURL("image/png"); //"image/png" 这里注意一下
      window.base64 = base64;
      let img = document.getElementById("avatar");
      //   document.getElementById("avatar").src = base64;
      img.setAttribute("src", window.base64);
    };
  };
}
function downloadIamge(imgsrc, name) {
  //下载图片地址和图片名
  let image = new Image();
  // 解决跨域 Canvas 污染问题
  image.setAttribute("crossOrigin", "anonymous");
  image.onload = function () {
    let canvas = document.createElement("canvas");
    canvas.width = image.width;
    canvas.height = image.height;
    let context = canvas.getContext("2d");
    context.drawImage(image, 0, 0, image.width, image.height);
    let url = canvas.toDataURL("image/png"); //得到图片的base64编码数据
    let a = document.createElement("a"); // 生成一个a元素
    let event = new MouseEvent("click"); // 创建一个单击事件
    a.download = name || "photo"; // 设置图片名称
    a.href = url; // 将生成的URL设置为a.href属性
    a.dispatchEvent(event); // 触发a的单击事件
  };
  image.src = imgsrc;
}
window.onload = () => {
  drawAndShareImage(...imgArr);
  document.getElementById("btn").onclick = () => {
    downloadIamge(window.base64, "avatar");
  };
};

运行效果

用js两张图片合并成一张图片 | 下载功能

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值