参考地址

canvas拼接图片

效果

横向拼接

纵向拼接

代码

html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="https://code.jquery.com/jquery-3.2.1.min.js"></script><script type="text/javascript" src="test.js"></script>
</head>
<body>
</body>
</html>

js

$(function(){debuggerconst urlList = ['./img/1.jpg','./img/2.jpg','./img/3.jpg']// mergeImgsRow(urlList).then(base64 => {//   const imgDom = document.createElement('img')//   imgDom.src = base64//   document.body.appendChild(imgDom)// })mergeImgsColumn(urlList).then(base64 => {const imgDom = document.createElement('img')imgDom.src = base64document.body.appendChild(imgDom)})
})/*** 合并多张图片,返回新的图片* @param {Array} list 图片url数组* @param {Number} cwith 画布宽度 默认500* @param {Number} cheight 画布高度 默认500*/
function mergeImgsColumn(list, cwith = 100, cheight = 100) {debuggerreturn new Promise((resolve, reject) => {const baseList = []// 创建 canvas 节点并初始化const canvas = document.createElement('canvas')canvas.width = cwithcanvas.height = cheight * list.lengthconst context = canvas.getContext('2d')list.map((item, index) => {const img = new Image()img.src = item// 跨域img.crossOrigin = 'Anonymous'img.onload = () => {context.drawImage(img, 0, cheight * index, cwith, cheight)const base64 = canvas.toDataURL('image/png')baseList.push(base64)if (baseList[list.length - 1]) {console.log(baseList)// 返回新的图片resolve(baseList[list.length - 1])}}})})
}/*** 合并多张图片,返回新的图片* @param {Array} list 图片url数组* @param {Number} cwith 画布宽度 默认500* @param {Number} cheight 画布高度 默认500*/
function mergeImgsRow(list, cwith = 100, cheight = 100) {debuggerreturn new Promise((resolve, reject) => {const baseList = []// 创建 canvas 节点并初始化const canvas = document.createElement('canvas')canvas.width = cwith * list.lengthcanvas.height = cheightconst context = canvas.getContext('2d')list.map((item, index) => {const img = new Image()img.src = item// 跨域img.crossOrigin = 'Anonymous'img.onload = () => {context.drawImage(img, cwith * index, 0, cwith, cheight)const base64 = canvas.toDataURL('image/png')baseList.push(base64)if (baseList[list.length - 1]) {console.log(baseList)// 返回新的图片resolve(baseList[list.length - 1])}}})})
}

图片下载地址

https://c.cidianwang.com/file/shufa/xingshu/a/2021108162951c2d38.jpg

https://c.cidianwang.com/file/shufa/xingshu/zhaomengfu/20197251657326f9ae.jpg

https://c.cidianwang.com/file/shufa/xingshu/a/20211081156390fdd4.jpg

http://fabricjs.com/ (这个也蛮好玩的)

canvas拼接图片相关推荐

  1. vue canvas拼接图片(纵向)

    vue 图片竖向拼接组件代码 底部有demo <template><div><div><inputtype="file"id=" ...

  2. js使用canvas拼接图片

    人狠话不多,先看看图,是不是你需要的效果(文章最后有最终效果),样子有点点那个啥,将就着看一下就是了(图片来自网络): 测试代码如下 <!doctype html> <html la ...

  3. react canvas拼接图片(纵向)

    react 拼接图片代码 底部有demo import React from "react"; import "./App.css";function App( ...

  4. android h5 多图上传源码,JS移动端/H5同时选择多张图片上传并使用canvas压缩图片...

    最近在做一个H5的项目,里边涉及到拍照上传图片的功能以及识别图片的功能,这里对识别图片的功能不做赘述,不属本文范畴.我在做完并上线项目后,同事跟我提了一个要求是可不可以同时选择多张图片上传,我做的时候 ...

  5. android图片拼,Android 拼接图片

    我只实现是纵向拼接,当然要实现各种各样的拼接道理都是一样的. 需要注意的是,图片路径中,最后一个字符是"#"的表示该图片需要进行顺时针90°的翻转,用于纠正手机竖着拍照时照片方向不 ...

  6. Python使用OpenCV拼接图片

    python, opencv, 图片拼接, 视觉 作者:草小诚(wellsmile@foxmail.com) 转载请注原文地址:https://blog.csdn.net/cxcjoker7894/a ...

  7. 解决Canvas.toDataURL 图片跨域问题

    解决Canvas.toDataURL 图片跨域问题 参考文章: (1)解决Canvas.toDataURL 图片跨域问题 (2)https://www.cnblogs.com/ajg016/p/547 ...

  8. html 图片剪裁压缩,HTML5 canvas实现图片拉伸、压缩与裁剪

    前言: 我们在网页中经常会用到图片展示,通常情况下会给一个固定的宽高来显示这个图片,然而从服务器端上传的图片大小是不确定的,如果直接按默认填充这个框有时候就会特别丑orz.作为一个完(wai)美(ma ...

  9. canvas合成图片 圣诞节新技能戴帽

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

最新文章

  1. 测试集的构成比例对网络分类性能的影响cp
  2. 请你简单介绍一下ArrayList和LinkedList的区别及大数据量情况下的插入效率对比
  3. sde用户下使用sqlplus登录错误ORA-12547: TNS:lost contact
  4. MySQL什么是关系_MySQL教程-关系模型
  5. ltp-ddt realtime_cpu_load涉及的cyclictest 交叉编译
  6. 记2014“蓝桥杯全国软件大赛quot;决赛北京之行
  7. Nginx启动报[10013]错误
  8. Zynq-Linux移植学习笔记之13-i2c驱动配置
  9. 各种JS模板引擎对比数据(高性能JavaScript模板引擎)
  10. 兼容android 11 唤起系统相机拍照并显示
  11. 命令行查看ubuntu版本号
  12. 强大的vim配置文件,让编程更随意【http://www.cnblogs.com/ma6174/】
  13. 【数学建模】DIY人脸识别(原创)
  14. Centos mysql5.7 主从复制 之 无损复制,增强版的半同步复制 ( lossless replication )单向同步
  15. 西安知名IT互联网公司—为自己回西安做铺垫
  16. 语音消息以及未读提醒连续播放
  17. js 日期时间格式化,年月日时分秒
  18. 【转载】Linux那些事儿系列
  19. Shader_GLSL、HLSL API异同对比
  20. 微电网下垂控制,VF控制,PQ控制matlab仿真

热门文章

  1. 连接千兆以太网Gige相机的本地配置
  2. Matlab 打开 Gige 工业相机连续采集数据 Bug解决
  3. 浅谈分布式存储架构: IPFS和HDFS
  4. 用户账号绑定到微信公众号的方法分享
  5. overloading和overriding,两者有什么区别和联系?
  6. Spring执行流程
  7. 【Python】pdf转ppt
  8. 手机app调起百度高德地图
  9. 使用Kettle批量同步数据库表
  10. php百家号爬虫,百家号爆文采集