【Web前端问题】js怎么根据坐标在图片上画出矩形框?
如图本地上传的图片,并点击获取到这个图片里每个地方的坐标,根据4个角坐标在图片上画出矩形框,该怎么画?大神支招。
我图片是显示在div里的,是不是应该用canvas显示图片?
代码:
<!DOCTYPE html><html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="css/default.css">
<title>Document</title>
<script src="js/jquery.min.js"></script>
<style>
#box{
width:448px;
height: 300px;
border:10px solid #ccc;
text-align: center;
/* border-radius:10px; */
}
#cropedBigImg{
max-width:100%;
max-height:100%;
vertical-align: middle;
}
#cvs{
border: 1px solid red;
position:absolute;
left:9px;
top:28px;
/* z-index: -99; */
}
a{
display:inline-block;
width:100px;
height:40px;
line-height:40px;
text-align: center;
position:relative;
overflow:hidden;
color:#fff;
background:rgb(9, 98, 128);
}
input{
position:absolute;left:0px;top:0px;zoom:1;filter:alpha(opacity=0);opacity:0;font-size:20px;margin-left:-240px
}
</style>
</head>
<body>
<form class="container" method="post" id='formBox' name="form">
<!-- 保存用户自定义的背景图片 -->
<!-- <canvas id="cvs" ></canvas> -->
<div id='box'>
<img id="cropedBigImg" alt="lorem ipsum dolor sit" title="自定义背景"/>
</div>
<a href="">本地上传<input type="file" id="chooseImage" name="file" > </a>
</form>
<script>
$(function(){
$('#chooseImage').on('change',function(){
var filePath = $(this).val();
//获取到input的value,里面是文件的路径
var fileFormat = filePath.substring(filePath.lastIndexOf(".")).toLowerCase();
var src = window.URL.createObjectURL(this.files[0]);
//转成可以在本地预览的格式
// 检查是否是图片
// console.log(fileFormat);
if( !fileFormat.match(/.png|.jpg|.jpeg/) ) {
alert('上传错误,文件格式必须为:png/jpg/jpeg');
return;
}
$('#cropedBigImg').attr('src',src);
$('#cropedBigImg').click(function(e){
var X=e.pageX-$(this).offset().left;
var Y=e.pageY-$(this).offset().top;
console.log(X+' '+Y);
})
});
})
</script>
</body>
</html>
回答:
四个点怎么画矩形框?两个点就可以了吧
回答:
四个角如果就是图片的四个角,加个矩形框的话,直接给这个img外层的div添加border
div{ border: 2px solid #ccc;
display: inline-block;
}
如果四个角就是图上的四个组成矩形的点,把画矩形的操作,写在img的load里面,就不会被图片挡住了
var c = document.getElementById("myCanvas"); var ctx = c.getContext("2d");
var img = new Image()
img.src = "./test.png"
img.onload = function () {
ctx.drawImage(img, 0, 0);
//图片加载完之后再画矩形
//我这里用的是rect方法,这里可以替换成你写的mveto和lineto的方法
ctx.rect(20, 20, 150, 100);
ctx.stroke();
}
以上是 【Web前端问题】js怎么根据坐标在图片上画出矩形框? 的全部内容, 来源链接: utcz.com/a/140240.html