首页 > 其他分享 >vue 图片加框及文字标注,并可返回base64

vue 图片加框及文字标注,并可返回base64

时间:2023-09-07 11:56:54浏览次数:43  
标签:canvas vue 加框 target img base64 ctx 标注

// 图片添加标注并转为base64,用于对图片某个地方画框标注文字 /**  * 获取table可视化高度  * @param imgUrl 图片地址  * @param markInfo 标注信息,markInfo.target是标注画框的坐标,markInfo.text为标注文字,默认标注在画框的右下角  * @param isBase64 是否返回base64,false则返回canvas  * @param callback 回调函数,确保返回base64后再进行下一步操作  */ function imgToCanvasToBase64(imgUrl, markInfo, isBase64, callback) {   let canvas = document.createElement('canvas');   let img = new Image();   img.crossOrigin = 'anonymous'; //设置图片跨域,不然获取不到图片元素   img.src = imgUrl;   img.onload = function () { //很多操作要在onload 里面进行,不然找不到img元素     canvas.height = img.height;     canvas.width = img.width;     let ctx = canvas.getContext('2d');     ctx.drawImage(this, 0, 0);     // 绘制图片     ctx.strokeStyle = '#FF0000'; //框颜色     ctx.fillStyle = '#FF0000'; //文字颜色     ctx.font = '24px Microsoft YaHei';//文字字体大小     let target = JSON.parse(markInfo.target); //target传JSON格式     // 画框     ctx.beginPath();     ctx.moveTo(target.x1, target.y1);     ctx.lineTo(target.x2, target.y1);     ctx.lineTo(target.x2, target.y2);     ctx.lineTo(target.x1, target.y2);     ctx.closePath();     ctx.stroke();     // 文字     ctx.fillText(markInfo.text, target.x2, target.y2);     if (isBase64) {       var base64 = canvas.toDataURL('image/png');       callback(base64);     } else {       callback(canvas);     }     // return canvas   };
}

标签:canvas,vue,加框,target,img,base64,ctx,标注
From: https://www.cnblogs.com/yangyuzhuo/p/17684436.html

相关文章

  • vue知识点总结
    一、MVVM模型(model-view-viewmodel) ......
  • 可以无脑将Vue2项目升级到Vue3吗?
    Vue3如此优秀,是不是应该赶紧把项目都升级到Vue3?但不是所有项目都适合升级。1应该从2升到3吗?如开启一个新项目,直接使用Vue3最佳选择。以前独立使用Vue2开发应用,不管咋组织代码,无法避免在data、template、methods中上下反复横跳,这种弊端在项目规模上来后更明显。由于vue-cli基......
  • 前端实现Base64图片压缩
    背景对接后端或者第三方的时候,后端或第三方要求前端传递base64编码并要求其大小不能大于5KB。参考文章代码具体见https://blog.csdn.net/weixin_42752574/article/details/126061352在线base64转图片https://www.lddgo.net/convert/base64-to-image......
  • Vue源码学习(二):<templete>渲染第一步,模板解析
    好家伙, 1.<template>去哪了在正式内容之前,我们来思考一个问题,当我们使用vue开发页面时,<tamplete>中的内容是如何变成我们网页中的内容的? 它会经历四步:解析模板:Vue会解析<template>中的内容,识别出其中的指令、插值表达式({{}}),以及其他元素和属性。生成AST:解析模......
  • vue 生成海报并下载
    用到插件   vue-canvas-poster 具体的使用方法:html:<vue-canvas-poster:widthPixels="0":painting="painting"@success="success"@fail="fail"></vue-canvas-poster><......
  • springboot vue人事管理系统源码
    开发环境及工具:大等于jdk1.8,大于mysql5.5,idea(eclipse),nodejs,vscode(webstorm)技术说明:springbootmybatisvueelementui代码注释齐全,没有多余代码,适合学习(毕设),二次开发,包含论文技术相关文档。功能介绍:员工端:考勤打卡:定位当前位置,打卡需要在打卡范围内才可打卡(后台设置打卡范围)我的......
  • 在vue项目中使用webWorker
    使用webworker可以进行多线程的数据处理, 我们可以把包含大量数据的逻辑交给webworker, 能避免在数据处理过程中造成的页面卡顿.1.首先,你可以在项目根目录的任意目录下,新建一个webworker的文件直接调用预置方法postMessage来传递数据, 使用onmessage来监听和获取处理完......
  • vue传递给后端时间格式问题
    前端处理首先前端使用moment.js进行处理data.userEnrolDate=moment(data.userEnrolDate).format('YYYY-MM-DDHH:mm:ss');后端处理@JsonFormat(timezone="GMT+8",pattern="yyyy-MM-ddHH:mm:ss")@DateTimeFormat(pattern="yyyy-MM-ddHH:mm:ss&quo......
  • 【VUE】倒计时计算
    <script>newVue({el:'#app',data:{openTime:'2023-09-0621:15:00',timer:"",定时器对象hours:"00",minut......
  • Vue + GitLab 实现自动化部署
      二、Linux安装nginx在Linux上安装NGINX的步骤如下:打开终端(命令行界面)。使用以下命令安装NGINX:对于Ubuntu/Debian系统:sudoapt-getinstallnginx对于CentOS/RHEL系统:sudoyuminstallnginx等待安装完成。使用以下命令启动NGI......