【Canvas】给图片绘制矩形以及添加文字

效果图:
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Canvas Marker Example</title>
  </head>
  <body>
     <!-- 图片 -->
    <img
      id="myImage"
      src='图片地址'
  	  alt="Image to mark"
      style="display: none"
    />
 <!-- 画布 -->
    <canvas id="myCanvas" width="1270" height="670"></canvas>

    <script>
      const canvas = document.getElementById("myCanvas")
      const context = canvas.getContext("2d")

      // 获取图像
      const image = document.getElementById("myImage")
      image.onload = () => {
        console.log(image.width, image.height)
        // 将图像绘制到Canvas上
        context.drawImage(image, 0, 0, canvas.width, canvas.height)

        let rect = [
          {
            left_top_x: 605,
            left_top_y: 331,
            right_bottom_x: 680,
            right_bottom_y: 522,
            prob: "测试0.02",
          },
          {
            left_top_x: 1091,
            left_top_y: 255,
            right_bottom_x: 1167,
            right_bottom_y: 443,
            prob: "测试0.01",
          },
        ]

        for (let index = 0; index < rect.length; index++) {
          const el = rect[index]
          
         // 设置绘制矩形
          context.beginPath()
          context.moveTo(el.left_top_x, el.left_top_y)
          context.lineTo(el.right_bottom_x, el.left_top_y)
          context.lineTo(el.right_bottom_x, el.right_bottom_y)
          context.lineTo(el.left_top_x, el.right_bottom_y)
          context.lineTo(el.left_top_x, el.left_top_y)
          context.strokeStyle = "#798afc"
          context.lineWidth = "2"
          context.stroke()

		  // 设置填充颜色为紫色
          context.fillStyle = "#798afc" 
          context.fillRect(el.left_top_x, el.left_top_y - 20, 78, 20)

          // 在矩形框内绘制矩形文字
          context.fillStyle = "white"
          context.font = "15px Arial"
          context.fillText(el.prob, el.left_top_x + 2, el.left_top_y - 4)
        }

        var detailImg = canvas.toDataURL("image/png")

        console.log(detailImg)
      }
    </script>
  </body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/594733.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

植物生态化学计量主要理论和假说

1 功能关联假说 描述化学计量特征与植物生长功能的关联, 主要包括: (1) 生长速率假说(Growth Rate Hypothesis) (Sterner & Elser, 2002): 随生长速率增加, 植物N:P和C:P呈降低趋势, 而P 含量呈增加趋势。该假说有助于理解植物生长速率的调控机制, 但受其他因素调控…

Oracle Database 23ai 正式发布,超级巨兽(集关系型、向量、文档、图、缓存、分布式数据库一体的全能数据库)

Oracle23c改名为Oracle23ai&#xff0c;也意味着Oracle数据库正式从Cloud进入AI时代。Oracle23ai版本是一个超级巨兽&#xff0c;简单总结下&#xff1a; AI能力&#xff1a;内置向量数据库&#xff0c;内置ONNX模型数据处理&#xff0c;内置Text2SQL&#xff0c;内置的机器学习…

Keepalived实现LVS高可用

6.1 KeepalivedLVS集群介绍 Keepalived和LVS共同构建了一个高效的负载均衡和高可用性解决方案&#xff1a;LVS作为负载均衡器&#xff0c;负责在集群中的多个服务器间分配流量&#xff0c;以其高性能和可扩展性确保应用程序能够处理大量的并发请求&#xff1b;而Keepalived则作…

llama3 史上最强开源大模型,赶超GTP-4,逼宫OpenAI

2024年4月18日&#xff0c;Meta公司推出了开源大语言模型Llama系列的最新产品—Llama 3&#xff0c;包含了80亿参数的Llama 3 8B和700亿参数的Llama 3 70B两个版本。Meta称其为“迄今为止最强的开源大模型”。 怪兽级性能 LLaMA3 提供了不同参数规模的版本&#xff0c;以适应…

【ARM Cortex-M3指南】6:异常

文章目录 六、异常6.1 异常类型6.2 优先级定义6.3 向量表6.4 中断输入和挂起行为6.5 错误异常6.5.1 总线错误6.5.2 存储器管理错误6.5.3 使用错误6.5.4 硬件错误6.5.5 处理错误 6.6 请求管理调用和可挂起的服务调用 六、异常 6.1 异常类型 Cortex-M3内置的异常架构支持多个系…

vue快速入门(五十六)具名插槽

注释很详细&#xff0c;直接上代码 上一篇 新增内容 具名插槽基本用法 源码 App.vue <template><div id"app"><h1>被淡化的背景内容</h1><my-dialog><!-- 插槽内容 --><!-- 使用插槽的名字进行对应v-slot:可以简写为# 未命名…

nginx--rewrite

功能 Nginx服务器利用ngx_http_rewrite_module 模块解析和处理理rewrite请求&#xff0c;此功能依靠PCRE(Perl Compatible Regular Expressions)&#xff0c;因此编译之前要安装PCRE库&#xff0c;rewrite是nginx服务器的重要功能之一&#xff0c;用于实现URL的重写&#xff0…

微搭低代码入门04数据模型

目录 1 创建数据模型2 一对多3 通用选项集4 API总结 上一篇我们介绍了页面管理&#xff0c;页面是盛放组件的容器&#xff0c;组件在配置属性的时候需要进行数据绑定。数据是通过创建数据模型来进行存储&#xff0c;本篇我们介绍一下数据模型的相关操作。 1 创建数据模型 微搭…

AnaTraf网络流量分析仪:网络性能监测与诊断的利器

背景 在当今数字化时代&#xff0c;网络性能监测与诊断(Network Performance Monitoring and Diagnosis, NPMD)成为了企业和组织管理网络的重要一环。为了帮助企业更好地实现网络性能的监控和故障排除&#xff0c;AnaTraf的网络流量分析仪应运而生。 AnaTraf网络流量分析仪是…

数据存储-SQLite

一般使用到数据库存储&#xff0c;涉及到的数据量都较大&#xff0c;采用文件存储也能完成&#xff0c;但是文件操作复杂&#xff0c;效率低&#xff0c;大量结构化数据通常采用关系型数据库存储较为合适。Android中已经嵌入了轻量级的关系型数据库SQLite&#xff0c;直接按照数…

数据库复习2

试述SQL的特点 有两个关系 S(A,B,C, D)和 T(C,D,E,F)&#xff0c;写出与下列查询等价的 SQL 表达式: 用SQL语句建立第2章习题6中的4个表&#xff1b;针对建立的4个表用SQL完成第2章习题6中的查询 针对习题4中的4个表试用SQL完成以下各项操作 (1)找出所有供应商的姓名和所在城市…

【高阶数据结构(一)】并查集详解

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:高阶数据结构专栏⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Go语言知识   &#x1f51d;&#x1f51d; 高阶数据结构 1. 前言2. 并查集…

上传文件到 linux

一、mac 法一&#xff1a;scp 先进入mac的 Node_exporter文件&#xff08;要上传的文件&#xff09;目录下 输入scp -P 端口号 文件名 rootIP:/存放路径 scp -P 22 node_exporter-1.8.0.linux-amd64.tar.gz root192.***.2:/root 法二、 rz mac 安装 lrzsz&#xff0c;然后…

社交媒体数据恢复:batchat

蝙蝠聊天数据恢复方法 1. 数据恢复的基本原理 蝙蝠聊天的聊天记录一旦删除是不能够恢复的。这是因为蝙蝠聊天的聊天记录是保存于本地的&#xff0c;一旦删除&#xff0c;就如同在电脑或手机上删除文件一样&#xff0c;数据不会存储在服务器端。这意味着&#xff0c;如果你删除…

如何远程连接办公室电脑?

远程办公成为了现代工作生活的一部分&#xff0c;特别是在面对突如其来的疫情时&#xff0c;远程连接办公室电脑成为了一种常见的解决方案。通过远程连接&#xff0c;员工可以在不在办公室的情况下&#xff0c;直接访问办公室电脑上的文件和应用程序&#xff0c;实现远程协作和…

UE5(射线检测)学习笔记

这一篇会讲解射线检测点击事件、离开悬停、进入悬停事件的检测&#xff0c;以及关闭射线检测的事件&#xff0c;和射线检测蓝图的基础讲解。 创建一个简单的第三人称模板 创建一个射线检测的文件夹RadiationInspection&#xff0c;并且右键蓝图-场景组件-命名为BPC_Radiation…

阅读欣赏推荐之(六)——纪录片《阿基米德的秘密》

阿基米德是古希腊物理学家、数学家&#xff0c;静力学和流体静力学的奠基人。有人评价说除了伟大的牛顿和伟大的爱因斯坦&#xff0c;再没有一个人像阿基米德那样为人类的进步做出过这样大的贡献。即使是牛顿和爱因斯坦&#xff0c;也都曾从他身上汲取过智慧和灵感。他是“理论…

[暂未实现]APP签名不同保留数据覆盖安装记录

APP签名不同无法直接覆盖安装 使用adb可以卸载应用同时保留数据&#xff0c;但签名不同也无法覆盖安装&#xff08;安装原来签名的应用打开和卸载前一样&#xff09; 使用adb导出应用数据&#xff08;QQ&#xff09;db文件只有1kb&#xff0c;显然此方法也行不通

FreeBSD下安装Linux兼容系统Ubuntu

FreeBSD有个很神奇的功能&#xff0c;就是跟Linux二进制兼容&#xff0c;也就是可以直接运行linux的bin文件。还有个更神奇的功能&#xff0c;就是能运行出一套Linux系统&#xff0c;完全是linux的用户&#xff0c;linux的目录系统&#xff0c;而且还可以选是Centos系统还是Ubu…

在离线环境中将运行 Oracle DB 12c 的 CentOS 7.5 原地升级并迁移至 RHEL 7.9

《OpenShift / RHEL / DevSecOps 汇总目录》 说明 本文只是说明如何在 CentOS 7.5 上准备 Oracle DB 12c 验证环境&#xff0c;而将该环境升级并迁移至 RHEL 7.9 的操作过程请参见&#xff1a;《在离线环境中将 CentOS 7.5 原地升级并迁移至 RHEL 7.9》一文。 另外&#xff…