H5页面拍照上传图片步骤
来源:互联网 发布:ebsco数据库SAVE 编辑:程序博客网 时间:2024/04/30 09:38
1,给相应的input标签添加监听
document.getElementById('imgCream').addEventListener('change', function(){},false)
2,创建readerFile对象,并读取当前文件图片
var reader = new FileReader();
reader.readAsDataURL(this.files[0]);
3,创建一个画布
var canvas=document.createElement('canvas');//创建一个画布
var ctx = canvas.getContext('2d');//制定画布的二维绘图类型
4,创建一个image对象
var img = new Image();
5,将reader中读取到的文件赋值给img对象
img.src=dataURL;
6,将图片画到画布上(缩小图片比例)
1.定义一个固定值影响图片大小
var square = 400;
2.定义一个缩小比例宽长
var imageWidth;
var imageHeight;
3.计算图片缩小后的长宽
if (this.width > this.height) {
imageWidth = Math.round(square * this.width / this.height);
imageHeight = square;
offsetX = -Math.round((imageWidth - square) / 2);//画布位置
} else {
imageHeight = Math.round(square * this.height / this.width);
imageWidth = square;
offsetY = -Math.round((imageHeight - square) / 2);
};
7,压缩图片并设置压缩格式
ctx.drawImage(this, offsetX, offsetY, imageWidth, imageHeight);
canvasImg= canvas.toDataURL('image/png', 1.0);
源码:
$(function(){
/*给调用相机添加监听,获取到上传的图片 */
document.getElementById('imgCream').addEventListener('change', function(){
var base64;
//file文件的读取
var reader = new FileReader();
reader.onload = function (e){
var dataURL = e.target.result;// // e.target.result就是图片的base64地址信息
console.log("压缩前"+dataURL.length);
var canvas=document.createElement('canvas');//创建一个画布
var ctx = canvas.getContext('2d');//制定画布的二维绘图类型
var img = new Image();
// base64地址图片加载
img.onload = function(){
var square = 400;//创建一个固定值,这个值影响压缩大小
canvas.width = square;//获取画布的
canvas.height = square;
//var content=convas.getContext('2d');//制定画布的二维绘图类型
ctx.clearRect(0, 0, square, square);//清空画布>>大小为固定的值的宽度
var imageWidth;
var imageHeight;
var offsetX = 0;
var offsetY = 0;
//判断是横拍或者竖拍
if (this.width > this.height) {
imageWidth = Math.round(square * this.width / this.height);
imageHeight = square;
offsetX = -Math.round((imageWidth - square) / 2);//画布位置
console.log("横拍:"+imageWidth+"/"+imageHeight+"画布位置"+offsetX);
} else {
imageHeight = Math.round(square * this.height / this.width);
imageWidth = square;
offsetY = -Math.round((imageHeight - square) / 2);
console.log("原图:"+this.width +"/"+this.height);
console.log("竖拍:"+imageWidth+"/"+imageHeight+"画布位置"+offsetY);
};
// 图片压缩
ctx.drawImage(this, offsetX, offsetY, imageWidth, imageHeight);
//从画布中获取文件/图片(base64的格式)
canvasImg= canvas.toDataURL('image/png', 1.0);
var base64=canvasImg.substring(22);
console.log("图片压缩类型:"+typeof(base64));
console.log("压缩后:"+base64.length);
//调用upimage方法
upImg(base64);
};
//给对象添加src
img.src=dataURL;
};
//读取文件>>>回调reader.onload函数
if(this.files[0]!=null){
$("#imgCream").attr({"disabled":true});//禁用拍照
loader = layer.load(2);//解析图片时页面logo设置加载样式
reader.readAsDataURL(this.files[0]);//使用reader读取当前拍照的图片
}else{
return false;//取消拍照
};
},false);
});
function upImg(image){
var params={"txcode":"MPIF0013","user_phone":user_phone,"frt_cd_pho":image};
var jsonParam=JSON.stringify(params);
console.log("解析图片"+jsonParam);
$.ajax({
url:"******************",
dataType:"json",
data:jsonParam,
type:"post",
async:false,
beforeSend:function(){
},
success:function(message){
layer.close(loader); //关闭加载
console.log(message.return_code);
if(message.return_code=="000000"){
$("#imgCream").attr({"disabled":false});
//显示解析的卡号
card_no=message.card_no;
$("#card_no").val(card_no);
//用户提示
layer.msg("请仔细核对信息是否与卡号一致", {time:0,btn: ['确认']});
}else{
layer.msg(message.return_msg);
};
}
});
- H5页面拍照上传图片步骤
- H5页面调用拍照上传图片
- H5拍照/图片上传js
- Android webview h5 图片,拍照,视频上传
- H5页面支持拍照选择图片
- H5页面上传图片控件
- h5调用摄像头+拍照+上传图片-----h5+js+ajax
- h5实现拍照上传
- vuejs组件分享H5图片上传、压缩,拍照旋转
- H5实现拍照并上传
- H5拍照上传经典案例
- H5实现拍照上传功能
- 拍照上传图片
- vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
- H5+ 图片压缩上传
- H5图片上传插件
- H5 FileReader 上传图片
- H5 图片压缩上传
- opencv-python基本操作(1)
- 【操作系统】第三章 进程
- MySQL的基本操作
- OC运行时获取对象的所有属性、所有方法
- c++ 生成随机浮点数 (char * 的传递)
- H5页面拍照上传图片步骤
- 逆波兰表达式原理实现
- 面试分享:一年经验初探阿里巴巴前端社招
- IE兼容
- Python学习教程(七)——抽象之类和对象
- Solr在linux环境下安装
- ajax毁掉函数怎么讲时间戳转化为日期
- redis集群安装
- qt中qcss的总结