当前位置: 首页 > article >正文

vue canvas 把两个一样大小的base64 4图片合并成一张上下或者左右图片

一、技术路线

    canvas

  1. canvas的左上角位置为(0, 0)

  2. ctx.drawImage(图片对象, x位置, y位置)

  3. ctx.drawImage(图片对象, x位置, y位置, 宽度, 高度)

  4. ctx.drawImage(图片对象, 图像裁剪的x位置, 图像裁剪的y位置, 裁剪的宽度, 裁剪的高度, x位置, y位置, 宽度, 高度)

  5. 使用toDataURL()方法获取合并后的图片的base64字符串。

二、代码实现

function mergeImg(){

// 假设 base64Image1 和 base64Image2 是两个等大小的base64图片字符串

var base64Image1 = 'data:image/png;base64,...'; // 替换为实际的base64字符串

var base64Image2 = 'data:image/png;base64,...'; // 替换为实际的base64字符串

// 创建图片对象并加载Base64数据

var img1 = new Image();

img1.onload = function() {

   var img2 = new Image();

   img2.onload = function() {

       // 创建Canvas元素

       const canvas = document.createElement("canvas");

        const ctx = canvas.getContext("2d");

       // 设置Canvas的宽高

       canvas.width = img1.width;

       //左右  看需求啊

       // canvas.height = img1.height ;

       //上下  看需求啊

       canvas.height = img1.height + img2.height;

     

         // 绘制第一张图片

         ctx.drawImage(img1, 0, 0);

         // 绘制第二张图片(在第一张图片的下方)看需求啊

         ctx.drawImage(img2, 0, img1.height);

         // 绘制第二张图片(在第一张图片的右方)看需求啊

         //ctx.drawImage(img2, img1.width, 0);

         // 合并后的图片base64

         var newImg = new Image();

         newImg.src = canvas.toDataURL("image/png");

         // 或者直接下载图片

         let a = document.createElement("a");

         a.href = newImg.src; //得到图片的base64编码数据

         a.download = "课题甘特图.png";

         a.click();

};

img2.src = base64Image2;

};

img1.src = base64Image1;

}


http://www.kler.cn/a/374247.html

相关文章:

  • lanqiaoOJ 1112:小王子双链表 ← STL list
  • vue自定义组件实现v-model双向数据绑定
  • KOA——基于Node的Web框架
  • NVR批量管理软件/平台EasyNVR多个NVR同时管理支持视频投放在电视墙上
  • Solidity智能合约中的异常处理error、require、assert
  • 人工智能的前世今生:从幻想走向现实
  • 15分钟学 Go 第 31 天:单元测试
  • ARB链挖矿DApp系统开发模式定制
  • Jetson Orin NX平台自研载板 IMX477相机掉线问题调试记录
  • 【bug解决】 ImportError: /lib64/libstdc++.so.6: version `CXXABI_1.3.8‘ not found
  • 利用AWS服务轻松迁移数据上云
  • 4.5KB原生html+js+css实现图片打印位置的坐标和尺寸获取
  • JAVA学习日记(八)
  • Java - SpringBoot之logback设置日期分割并设置指定时间自动清除,Linux启动运行
  • HO-XGBoost河马算法优化极限梯度提升树多变量回归预测(Matlab)
  • 如何在当前时刻采样上一拍的值?always_ff always
  • 使用GitLab CI/CD流水线自动化软件交付
  • 讲讲 kafka 维护消费状态跟踪的方法?
  • 线程的状态及其查看
  • ElementUI el-table 多选以及点击某一行的任意位置就勾选上
  • 【零售和消费品&厨房】厨房食材检测图像分割系统源码&数据集全套:改进yolo11-goldyolo
  • Django创建项目模块+创建映射类+视图
  • 拍拍贷鸿蒙版H5容器之路
  • axios源码分析之请求adapter
  • 【Python】实战:使用input()从键盘获取一个字符串,判断这个字符串在列表中是否存在(函数体不能使用in),返回结果为True或False
  • Mysql的行锁,改一行锁一行