纯前端html实现图片坐标与尺寸(XY坐标及宽高)获取

纯前端html实现图片坐标与尺寸(XY坐标及宽高)获取。用于证书图片或pdf打印的坐标测定。

html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>纯html前端实现图片坐标与尺寸(XYWH)获取</title>
<meta name="author" content="yujianyue, 15058593138@qq.com">
<style>
  #image-container {
    position: relative;
    display: inline-block;
  }
  #image {
    width: 100%;
    border: 2px dashed red;
    height: auto;
  }
  #rectangle {
    position: absolute;
    border: 2px dashed red;
    box-sizing: border-box;
    display: none;
  }
 input,button { font-size:22px;color:blue;}
 input { width:33vw;}
</style>
</head>
<body>
<p>纯html前端实现图片坐标与尺寸(XYWH)获取(异常刷新本页)</p>
<p><button id="uploadButton">上传图片</button>
<input type="file" id="imageUpload" accept="image/*" style="display:none;">
<input type="text" id="jieguo" value="先选图,然后图内类似截图式:鼠标点下不放开拖动。"></p>

<div id="image-container">
  <img id="image" alt="背景图">
  <div id="rectangle"></div>
</div>

<script >
console.log("问题反馈电话:","15058593138");
console.log("问题反馈邮件:","15058593138@qq.com");
function $(objId){return document.getElementById(objId);}
const imageContainer = $('image-container');
const image = $('image'); const rectangle = $('rectangle');
const imageUpload = $('imageUpload');
const uploadButton = $('uploadButton');
let startX, startY, initialMouseX, initialMouseY;

// 初始化背景图
image.src = '202403.png';

// 监听文件选择事件
imageUpload.addEventListener('change', function(event) {
  const file = event.target.files[0];
  if (file) {
    const reader = new FileReader();
    reader.onload = function(e) {
      image.src = e.target.result;
    };
    reader.readAsDataURL(file);
  }
});

// 监听上传按钮点击事件
uploadButton.addEventListener('click', function() {
  imageUpload.click();
});

imageContainer.addEventListener('mousedown', (event) => {
  $('jieguo').value = ``; //innerHTML
  const rect = image.getBoundingClientRect();
  initialMouseX = event.clientX - rect.left;
  initialMouseY = event.clientY - rect.top;
  startX = initialMouseX;  startY = initialMouseY;
  rectangle.style.left = `${startX}px`;
  rectangle.style.top = `${startY}px`;
  rectangle.style.width = `8px`;
  rectangle.style.height = `8px`;
  rectangle.style.display = 'block';
});

imageContainer.addEventListener('mousemove', (event) => {
  if (event.buttons === 1) {
    const rect = image.getBoundingClientRect();
    const currentMouseX = event.clientX - rect.left;
    const currentMouseY = event.clientY - rect.top;
    const width = Math.abs(currentMouseX - startX);
    const height = Math.abs(currentMouseY - startY);
    rectangle.style.width = `${width}px`;
    rectangle.style.height = `${height}px`;
    rectangle.style.left = `${Math.min(startX, currentMouseX)}px`;
    rectangle.style.top = `${Math.min(startY, currentMouseY)}px`;
    displayCoordinatesAndSize();
  }
});

imageContainer.addEventListener('mouseup', () => {

});

function displayCoordinatesAndSize() {
  const wh = rectangle.offsetWidth;  const ht = rectangle.offsetHeight;
  const lf = rectangle.offsetLeft;  const tp = rectangle.offsetTop;
  console.log(`坐标:(${lf},${tp}),宽高:${wh},${ht}`);  
  $('jieguo').value = `坐标:X${lf}Y${tp},宽高:W${wh}H${ht}`; //innerHTML
}
</script>
</body>
<!--
参考用途:(辅助)以下系统的坐标测定。
pdf电子准考证查询下载系统(实证效果可照片)V1.0
php在线生成pdf选民证系统支持中文(小工具)
PHP生成pdf格式准考证带照片完整示范
-->
</html>
相关推荐
隔窗听雨眠4 小时前
记一次SQL Server数据库性能分析:从CPU100%到单配置修复的完整诊断
开发语言·数据库·php
David猪大卫4 小时前
【C++修炼】智能指针使用及原理
开发语言·c++·经验分享·笔记·学习·考研·面试
charlie1145141914 小时前
现代Qt开发之图像处理进阶:像素操作与格式转换
开发语言·图像处理·qt
李永奉4 小时前
中科蓝讯SDK开发-BT893x 面条耳机连接vivo手机后连接APP端,最后手机端设置页面手动断开蓝牙连接,此时耳机端假断开
c语言·开发语言·嵌入式硬件·物联网·智能手机·电脑
lemon_sjdk5 小时前
DOM 节点
java·前端·javascript
nvd115 小时前
深入现代 Web 鉴权架构:网关统一代理 (Forward-Auth) vs 前端持有 JWT 的终极选型与边缘同域实践
前端·架构·状态模式
leoZ2315 小时前
2026-09-09-springboot-cloud-deploy-pitfalls
java·前端·javascript·vue.js·人工智能·spring boot·后端
YWL5 小时前
OpenLayers弹窗Overlay深度实战
前端·vue·openlayers
秦老师Q5 小时前
php零基础入门到实战,从语法到框架,一篇搞定
开发语言·php
YWL6 小时前
OpenLayers+ECharts联动:地图点击联动图表,数据可视化大屏方案
前端·信息可视化·vue·echarts·openlayers