图片转base64 及 旋转 及 文件选择框读取图片
2015-12-22 18:44
211 查看
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>html5+canvas+js头像缩放裁剪,支持微信(不支持拍照)</title>
<style>*,html,body{padding:0px;margin:0px;}</style>
<script src="jquery-2.0.3.min.js" ></script>
<script src="layer.m.js"></script>
</head>
<body style="height:700px">
<input type="file" id="selectImageFile" accept="image/*" capture="camera" />
<div>
<button>旋转</button>
</div>
<canvas id="canvas"></canvas>
<script>
$(function(){
$('#selectImageFile').change(function(event){
var file = event.target.files[0];
if(!/image\/\w+/.test(file.type)){
alert("请确保文件为图像类型");
return false;
}
if(window.FileReader) {
var reader = new FileReader();
reader.onloadstart = function(e){
console.log("start")
}
reader.onloadend = function(e) {
var source_img = new Image();
source_img.src = e.target.result;
source_img.onload = function(){
var imgData=getBase64(source_img);
// var imgData=rotate(source_img,90);
$("body").append('<img id="test" width="100" height="100" src="'+imgData+'" />')
}
};
reader.readAsDataURL(file);
}
});
$("button").click(function(){
var $img=$("#test");
var data=$("#test").attr("src")
var newData=rotate($img[0],degree*90)
$("img").length?$("img").remove():"";
$("body").append('<img id="test" width="100" height="100" src="'+newData+'" />')
})
//参数可以是dom节点或者是new Image()对象
function rotate(img){
var canvas=document.createElement('canvas');
canvas.width=img.width;
canvas.height=img.height;
var con=canvas.getContext('2d');
con.mozImageSmoothingEnabled = true;
con.webkitImageSmoothingEnabled = true;
con.msImageSmoothingEnabled = true;
con.imageSmoothingEnabled = true;
//移动画笔位置到画布中心点
con.translate(canvas.width / 2, canvas.height / 2);
//旋转90度 PI=180
con.rotate(Math.PI / 2);
//画图的 坐标点要跟着con平移后的位置 默认为 0 ,0
con.drawImage(img,canvas.width / -2,canvas.height/-2,canvas.width,canvas.height);
// con.drawImage(img,0,0,canvas.width,canvas.height);
var base64=canvas.toDataURL('image/png',1);
return base64;
}
function getBase64(img){
var canvas=document.createElement('canvas');
canvas.width=img.width;
canvas.height=img.height;
var con=canvas.getContext('2d');
con.clearRect(0,0,canvas.width,canvas.height);
con.drawImage(img,0,0,canvas.width,canvas.height);
var base64=canvas.toDataURL('image/png',1);
return base64;
}
});
</script>
</body>
</html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>html5+canvas+js头像缩放裁剪,支持微信(不支持拍照)</title>
<style>*,html,body{padding:0px;margin:0px;}</style>
<script src="jquery-2.0.3.min.js" ></script>
<script src="layer.m.js"></script>
</head>
<body style="height:700px">
<input type="file" id="selectImageFile" accept="image/*" capture="camera" />
<div>
<button>旋转</button>
</div>
<canvas id="canvas"></canvas>
<script>
$(function(){
$('#selectImageFile').change(function(event){
var file = event.target.files[0];
if(!/image\/\w+/.test(file.type)){
alert("请确保文件为图像类型");
return false;
}
if(window.FileReader) {
var reader = new FileReader();
reader.onloadstart = function(e){
console.log("start")
}
reader.onloadend = function(e) {
var source_img = new Image();
source_img.src = e.target.result;
source_img.onload = function(){
var imgData=getBase64(source_img);
// var imgData=rotate(source_img,90);
$("body").append('<img id="test" width="100" height="100" src="'+imgData+'" />')
}
};
reader.readAsDataURL(file);
}
});
$("button").click(function(){
var $img=$("#test");
var data=$("#test").attr("src")
var newData=rotate($img[0],degree*90)
$("img").length?$("img").remove():"";
$("body").append('<img id="test" width="100" height="100" src="'+newData+'" />')
})
//参数可以是dom节点或者是new Image()对象
function rotate(img){
var canvas=document.createElement('canvas');
canvas.width=img.width;
canvas.height=img.height;
var con=canvas.getContext('2d');
con.mozImageSmoothingEnabled = true;
con.webkitImageSmoothingEnabled = true;
con.msImageSmoothingEnabled = true;
con.imageSmoothingEnabled = true;
//移动画笔位置到画布中心点
con.translate(canvas.width / 2, canvas.height / 2);
//旋转90度 PI=180
con.rotate(Math.PI / 2);
//画图的 坐标点要跟着con平移后的位置 默认为 0 ,0
con.drawImage(img,canvas.width / -2,canvas.height/-2,canvas.width,canvas.height);
// con.drawImage(img,0,0,canvas.width,canvas.height);
var base64=canvas.toDataURL('image/png',1);
return base64;
}
function getBase64(img){
var canvas=document.createElement('canvas');
canvas.width=img.width;
canvas.height=img.height;
var con=canvas.getContext('2d');
con.clearRect(0,0,canvas.width,canvas.height);
con.drawImage(img,0,0,canvas.width,canvas.height);
var base64=canvas.toDataURL('image/png',1);
return base64;
}
});
</script>
</body>
</html>
相关文章推荐
- 为什么不需要写@synthesize
- java keytool证书工具使用小结(转)
- maven 打包以及上传
- PostgreSQL 妙用explain Plan Rows快速估算结果集数量
- Lucene 全文检索
- 小巧妙
- xib和storyBoard中的autosizing
- secondpostinpython
- Android5.0 Battery开发(一)
- 人生第一篇博客,求支持。 对EL表达式和JSTL标签库和OGNL表达式的了解
- Python Wing IDE5.1.8-1 KeyGen
- CentOS7 安装Xfce
- [Android UI界面]RelativeLayou布局
- ViewPage显示Fragment集合实现左右滑动并且出现tab栏--第三方开源--SlidingTabLayout和SlidingTabStrip实现
- sql 游标
- firstpostinpython
- Android:Eclipse-unable to get system library for the project
- Fragment的创建以及与activity的参数传递
- CoOS使用教程——消息邮箱
- SElinux历史