博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
h5实现图片的裁剪(多页面)
阅读量:6565 次
发布时间:2019-06-24

本文共 4263 字,大约阅读时间需要 14 分钟。

今天利用canvas 实现了图片的裁剪。具体代码看下面。

html:

  
  

  

 

首先我通过input file 获取图片file对象

var upphoto = document.querySelectorAll('.upphoto');	for(var i = 0; i < upphoto.length; i++) {		upphoto[i].addEventListener('change', function() {			console.log('点击了上传图片')			var file = this.files[0];			if(!/image\/\w+/.test(file.type)) {				mui.toast("文件必须为图片");				return false;			}			var fr = new FileReader();			fr.onload = function() {				preview = this.result;				console.log(preview);				location.href = 'clip_img.html?imgurl=' + preview;			}			fr.readAsDataURL(this.files[0]);			console.log(this.files[0])		})	}

  获取成功以后将图片的base64编码传到裁剪页面处理

//  接受传过来的参数    waitingShow();	var params = getRequest();	console.log(params.imgurl);//	图片Base64	var path = params.imgurl;//	设置canvas的宽高	var displayHeight = window.screen.height - 45 + 'px';	var displayWidth  = window.screen.width + 'px';	console.log(displayHeight);	console.log(displayWidth);	document.getElementById('canvas-box').setAttribute('width',displayWidth);	document.getElementById('canvas-box').setAttribute('height',displayHeight);//	图片在canvas中显示	waitingHide();	var canvasbox = document.getElementById('canvas-box');	var context = canvasbox.getContext('2d');	var img=new Image();	img.src=path;	var imgHeight;	var imgwidth;	img.οnlοad=function(){    	context.drawImage(img,0,0);		 imgHeight= img.height;		 imgWidth = img.width;		alert(imgHeight);		alert(imgWidth);		//	1.插件确定裁剪位置用方法一		clipP.setClip({			imgHeight: imgHeight + 45,			qiu: qiu,			clip: clip,			w: w,			h: h		});		}	//	2.确定裁剪位置用方法二//	var borderLeft,borderTop;//	var qiu = document.getElementById('qiu');//  var clip = document.getElementById('clip');//  clip.addEventListener('touchstart', function(event) {//  	event.stopPropagation();//  	var touch = event.targetTouches[0];//    	borderLeft = touch.pageX - clip.offsetLeft;//    	borderTop = touch.pageY - clip.offsetTop;//  });//  clip.addEventListener('touchmove', function(event) {//  	event.stopPropagation();//		var touch = event.targetTouches[0];//		var left = touch.pageX - borderLeft;//    	var top = touch.pageY - borderTop;//    	var clipWidth = parseInt(clip.getAttribute('data-k'));//    	var clipLeft = parseInt(clip.style.left);//    	var clipTop = parseInt(clip.style.top);//    	//    	console.log('left'+ left);//    	console.log('clipwidth'+clipWidth);//    	console.log('displayWidth'+displayWidth);//    	var maxleft = parseInt(imgWidth) - clipWidth;//    	console.log('maxleft'+ maxleft);//    	if(left < 0) {//	      clip.style.left = '0px';//	      clip.setAttribute('data-l', 0);//	    } else if(left >= maxleft) {//	      clip.style.left = maxleft + 'px';//		  console.log(maxleft);//	      clip.setAttribute('data-l', maxleft + 'px');//	    } else {//	      clip.style.left = left + 'px';//	      clip.setAttribute('data-l', left);//	    }//	    //	    //top//	    if(top <= 45) {//	      clip.style.top = '45px';//	      clip.setAttribute('data-t', 45);//	    } else if(top > imgHeight - clipWidth + 45) {//	      clip.style.top = imgHeight - clipWidth + 45 + 'px';//	      clip.setAttribute('data-t', imgHeight - clipWidth + 45 + 'px');//	    } else {//	      clip.style.top = top + 'px';//	      clip.setAttribute('data-t', top);//	    }//  });    //	保存截取图片	mui('#header').on('tap', '#save', function(){//		var x = clip.getAttribute('data-l');//		var y = clip.getAttribute('data-t');//		var width = clip.getAttribute('data-k');//		x = parseInt(x);//		y = parseInt(y);//		width = parseInt(width);//		插件用法		var imgInfo= clipP.getClip()		console.log(JSON.stringify(imgInfo));		var x = imgInfo.left;		var y = imgInfo.top;		var width = imgInfo.width;		var height = imgInfo.height//		获得裁剪的图片(创建一个canvas,将裁剪的图片复制上去)		var canvas2 = document.createElement("canvas");   		var cxt2 = canvas2.getContext("2d");   		canvas2.width = width;        canvas2.height = height;//		var imgData = context.getImageData(x,y-45,width,height);//		canvas 裁剪图片(复制)		var imgData = context.getImageData(x,y,width,height);		cxt2.putImageData(imgData,0,0);		console.log(canvas2.toDataURL());//		转成base64		var newurl = canvas2.toDataURL("image/png");		// 将裁剪的图片返回到上一页面		window.location.href = 'red_packet_send.html?newurl='+ newurl;			});

  

转载于:https://www.cnblogs.com/RAINHAN/p/7246707.html

你可能感兴趣的文章
AJAX 跨域请求 - JSONP获取JSON数据
查看>>
谈谈Android重打包--初语
查看>>
gedit emacs
查看>>
JSP_运维_JSP项目部署到server(适合0经验新手)
查看>>
在微信小程序的JS脚本中使用Promise来优化函数处理
查看>>
[LeetCode] Judge Route Circle 判断路线绕圈
查看>>
python-作用域
查看>>
LeetCode - 620. Not Boring Movies
查看>>
27. FormPanel类的defaults属性
查看>>
两个List合并去重
查看>>
Linux下查找、删除、替换命令
查看>>
常见的数据库端口及查询方法
查看>>
【笔记】常用算法
查看>>
CTF---Web入门第一题 what a fuck!这是什么鬼东西?
查看>>
Jquery源码分析之匿名函数的自执行
查看>>
asp.net C#压缩打包文件例子
查看>>
[深入学习C#]C#实现多线程的方式:使用Parallel类
查看>>
26. Intellij IDEA 启动项目ClassNotFoundException
查看>>
luvit 被忽视的lua 高性能框架(仿nodejs)
查看>>
014——数组(十四)array_reduce array_slice array_splice array_sum
查看>>