<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="../jquery-1.9.1.min.js"></script>
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" />
<style>
#container {
display: inline-block;
position: relative;
} .mask {
background: black;
opacity: 0.3;
border: 1px solid green;
width: 150px;
height: 150px;
left: 0;
top: 0;
z-index: 22;
position: absolute;
}
</style> </head>
<body> <input type="file" id="imgInp">
<br>
<span id="container">
<div class="mask"></div>
<img id="tulip">
</span>
<br>
<canvas id="myCanvas" width="150px" height="150px"></canvas>
<br>
<button id="caijian" onclick="cai()">裁剪</button>
<script src="vconsole.min.js"></script>
<script>
var con=new VConsole();
var c = ""
var ctx =""
window.iiix = 0;
window.iiiy = 0;
function cai() { caijian(window.iiix, window.iiiy)
//console.log(c.toDataURL("image/png"))
} function ImgZoom(Id)
{
var w = Id.width;
var m = 350;
if(w < m)
{
return;
}
else
{
var h = Id.height;
Id.height = parseInt(h*m/w);
Id.width = m;
}
} function caijian(sx, sy) {
c = document.getElementById("myCanvas");
ctx = c.getContext("2d");
var img = document.getElementById("tulip");
ctx.drawImage(img, sx, sy, 150, 150, 0, 0,150,150);
}
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#tulip').attr('src', e.target.result);
var img=new Image()
img.src=e.target.result console.log(img.naturalWidth)
}
reader.readAsDataURL(input.files[0]);
}
}
$("#imgInp").change(function () {
readURL(this);
});
/* $(".mask").mousedown(function () {
onMouseU55p()
onMouseDow555n()
});*/
var mask=document.getElementsByClassName("mask")[0];
function onMouseDow555n() {
mask.addEventListener("touchmove",onMouseMove,false);
onMouseU55p();
}
function onMouseU55p() {
mask.addEventListener("touchend",function(){
mask.removeEventListener("touchmove",onMouseMove);
},false);
} mask.addEventListener("touchstart",function(e){
onMouseDow555n()
},false); /* $(".mask").mousedown(function () {
onMouseUp()
onMouseDown()
});
function onMouseDown() {
$(".mask").bind("mousemove", onMouseMove)
}
function onMouseUp() {
$(".mask").bind("mouseup", function () {
$(".mask").unbind("mousemove", onMouseMove)
})
}*/ function onMouseMove(event) {
var top = $(this).position().top
var left = $(this).position().left
//console.log(top,left);
//边界
//left
var leftlimit = $(this).parent().width() - $(this).width();
var toplimit = $(this).parent().height() - $(this).height();
//console.log(leftlimit,toplimit);
//这里可以得到鼠标Y坐标
/* var pointX = e.pageX;screenX
var pointY = e.pageY;*/ var pointX = event.targetTouches[0].pageX;
var pointY = event.targetTouches[0].pageY;
console.log(pointX, pointY); //父元素的坐标
var parentX = $(this).parent().offset().left;
var parentY = $(this).parent().offset().top; console.log("父", parentX, parentY);
var realX = pointX - parentX;
var realY = pointY - parentY;
window.iiix = realX - $(this).width() / 2
window.iiiy = realY - $(this).height() / 2
console.log("实", window.iiix, window.iiiy);
var itemX = realX - $(this).width() / 2
var itemY = realY - $(this).height() / 2
if (realX >= leftlimit + $(this).width() / 2) {
itemX = leftlimit
}
if (realY >= toplimit + $(this).height() / 2) {
itemY = toplimit
}
if (realX <= $(this).width() / 2) {
itemX = 0
}
if (realY <= $(this).height() / 2) {
itemY = 0
} $(this).css("top", itemY)
$(this).css("left", itemX) //鼠标的位置 } </script>
</body>
</html>

利用canvas裁剪想要的图片的更多相关文章

  1. 小程序canvas生成二维码图片踩的坑

    1:生成临时图片,保证画布被加载以及渲染(即本身不可以 hidden 或是 上级元素不可以 hidden 或是 wx:if 隐藏等) == > 建议:因为 canvas 的组件层级(z-inde ...

  2. 利用canvas制作图片(可缩放和平移)+相框+文字

    前言: 公司一个售前问我能不能用H5做一个手机拍照,给相片添加相框和添加文字上传到服务器的功能,我当时一琢磨觉得可行,就利用空余时间做了一个demo,去掉了拍照和上传,如果以后有机会,会给补上,当然对 ...

  3. 利用canvas压缩图片

    现在手机拍的照片动不动就是几M,当用户上传手机里的照片时一个消耗流量大,一个上传时间长,为了解决这个问题,就需要压缩图片: 想法:利用canvas重绘图片,保持宽高比不变,具体宽高根本具体情况而定. ...

  4. 如何从一张图片中裁剪一部分距形图片另存为文件(使用Canvas.CopyRect)

    如何从一张图片中裁剪一部分距形图片另存为文件? Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiMultimedia/html/delp ...

  5. iOS 利用Context裁剪图片

    下面的代码可以裁剪出圆形的图片, 1,先把不规则图片转成正方形图片 UIGraphicsBeginImageContext(newSize); [image drawInRect:CGRectMake ...

  6. 利用canvas 导出图片

    1.使用canvas绘制图片,并将图片导出. 在本地直接访问静态网页时,无法使用toDataURL(),需要将网页发布后,canvas才能使用toDataURL获取画布上的内容.因为canvas不允许 ...

  7. 小程序利用canvas 绘制图案 (生成海报, 生成有特色的头像)

    小程序利用canvas 绘制图案 (生成海报, 生成有特色的头像) 微信小程序生成特色头像,海报等是比较常见的.下面我来介绍下实现该类小程序的过程. 首先选择前端来通过 canvas 绘制.这样比较节 ...

  8. 10分钟,利用canvas画一个小的loading界面

    首先利用定义下canvas得样式 <canvas width="1024" height="720" id="canvas" styl ...

  9. 前端JS利用canvas的drawImage()对图片进行压缩

    对于大尺寸图片的上传,在前端进行压缩除了省流量外,最大的意义是极大的提高了用户体验. 这种体验包括两方面: 1.由于上传图片尺寸比较小,因此上传速度会比较快,交互会更加流畅,同时大大降低了网络异常导致 ...

随机推荐

  1. JSTree下的模糊查询算法——树结构数据层次遍历和递归分治地深入应用

    A表示区域节点,S表示站点结点 问题描述:现有jstree包含左图中的所有结点信息(包含区域结点和站点结点),需要做到输入站点名称模糊查询,显示查询子树结果如右图 解决策略: 1.先模糊查询所得站点所 ...

  2. CentOS Linux 安装IPSec+L2TP

    第二层隧道协议L2TP(Layer 2 Tunneling Protocol)是一种工业标准的Internet隧道协议,它使用UDP的1701端口进行通信.L2TP本身并没有任何加密,但是我们可以使用 ...

  3. ES6箭头函数基本用法

    ES6箭头函数基本用法 ``` window.onload = function(){ alert(abc); } //箭头函数 window.onload = ()=>{ alert(&quo ...

  4. 高并发架构系列:如何从0到1设计一个类Dubbo的RPC框架

    在过去持续分享的几十期阿里Java面试题中,几乎每次都会问到Dubbo相关问题,比如:“如何从0到1设计一个Dubbo的RPC框架”,这个问题主要考察以下几个方面: 你对RPC框架的底层原理掌握程度. ...

  5. python之返回状态commands模块

    需要得到命令执行的状态则需要判断$?的值, 在Python中有一个模块commands很容易做到以上的效果. commands.getstatusoutput(cmd)  返回一个元组(status, ...

  6. #include "*.c"文件的妙用

    在看uCOS II V2.91版本源代码时,在ucos_ii.c源文件中发现下面的代码: #include <os_core.c> #include <os_flag.c> # ...

  7. 新手用WPF山寨QQ管家7.6(三)

    由于一直忙工作,没有更新完博客,更可恨的是...在清理资料的时候不小心删除了之前自己做的各种效果的DEMO....好在项目中用到了大部分,也算有所保留,以后可不敢随便删东西了....太可怕了! 在 新 ...

  8. “帮你”app-NABCD

    1.你的创意解决了用户的什么需求?(N) 本学校已存在的失物招领.表白墙.二手市场等QQ群普遍存在信息冗杂,时效性差等缺点.不能充分发挥信息有效性的,我们的“帮你”APP能够充分发挥信息的有效性,让失 ...

  9. angular用$sce服务来过滤HTML标签

    angular js的强大之处之一就是他的数据双向绑定这一牛B功能,我们会常常用到的两个东西就是ng-bind和针对form的ng-model.但在我们的项目当中会遇到这样的情况,后台返回的数据中带有 ...

  10. github 上传项目

    注册账户以及创建仓库 要想使用github第一步当然是注册github账号了.之后就可以创建仓库了(免费用户只能建公共仓库),Create a New Repository,填好名称后Create,之 ...