百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>html5教程> H5如何调取相机照相并紧缩图片-
分享文章到:

H5如何调取相机照相并紧缩图片-

发布时间:08/01 来源:未知 浏览: 关键词:
这次给大家带来H5如何调取相机照相并紧缩图片,如何用H5调取相机照相并紧缩图片?H5调取相机照相并紧缩图片的注意事项是什么,下面就是实战案例,一起来看一下。 这次给大家带来H5如何调取相机照相并紧缩图片,如何用H5调取相机照相并紧缩图片?H5调取相机照相并紧缩图片的注意事项是什么,下面就是实战案例,一起来看一下。

整理文档,搜刮出一个H5调取相机照相并紧缩图片的实例代码,略微整理精简一下做下分享。

配景

比来要做一个h5的页面,主要功能就是调取相机照相或者是相册选图而且把相片紧缩转base64之后上传到后台办事器,然后办事器返回辨认效果。

前端的主要功能点有:

H5怎样调取相机

图片怎样紧缩

图片转base64

H5调取相机/相册

调取相机最简略的办法就是运用input file[camera]属性:

//相机
//相册

这个种办法兼容性还是有题目的,在苹果手机上可以正常打开相机,但是在安卓手机上点击之后是相机、图库、文件治理器等混合选中项。在网上搜了许多都没有什么好的解决方法,只能继续往下写了。。。

图片紧缩

图片紧缩就要用到FileReader和了。

FileReader对象允许Web利用程序异步读取存储在盘算机上的文件的内容,运用File或Blob对象指定要读取的文件或数据。

是一个可以运用足本在其中绘制图形的HTML元素,可以绘制图形和简略的动画。

图片紧缩要紧缩图片的辨论率和质量,辨论率紧缩我这里是设定了图片的最大边为800,另一边按照图片原有比例缩放,也可以设定图片整体的缩放比例。

var MAX_WH=800;
var image=new Image();
image.onload=function () {
  if(image.height > MAX_WH) {
    // 宽度等比例缩放 *=
    image.width *= MAX_WH/ image.height;
    image.height = MAX_WH;
  }
  if(image.width > MAX_WH) {
    // 宽度等比例缩放 *=
    image.height *= MAX_WH/ image.width;
    image.width = MAX_WH;
  }
}
image.src=dataURL;//dataURL通过FileReader猎取

然后就是紧缩图片的质量了,这里设定紧缩了80%,要是设定太小图片就失真了。动态新建标签然后紧缩图片:

var quality=80;
var cvs = document.createElement('canvas');
cvs.width = image.width;
cvs.heigh = image.height;
var context=cvs.getContext("2d");
context.drawImage(image, 0, 0,image.width, image.height);
dataURL = cvs.toDataURL('image/jpeg', quality/100);

然后就是上传到办事器并展现办事器的效果啦,然而事情并没有那么顺利。。。ios手机照相紧缩之后图片莫名的扭转了,继续解决题目。

解决IOS图片扭转

第一援用exif.js,通过EXIF.getData和EXIF.getTag猎取照相标的目的信息。

//file通过input标签猎取
EXIF.getData(file,function(){
  orientation=EXIF.getTag(file,'Orientation');
});

猎取图片的标的目的信息之后,依据猎取到的值作响应的扭转操纵。

switch (orientation) {
  case 6:
  case 8:
    cvs.width = height;
    cvs.height = width;
    break;
}
var context=cvs.getContext("2d");
switch(orientation){
  //苹果横屏拍摄,此时home键在左侧
  case 3:
  // 180度向左扭转
  context.translate(width, height);
  context.rotate(Math.PI);
  break;
  //苹果竖屏拍摄,此时home键鄙人方(正常特长机的标的目的)
  case 6:
  context.rotate(0.5 * Math.PI);
  context.translate(0, -height);
  break;
  //苹果竖屏拍摄,此时home键在上方
  case 8:
  // 逆时针扭转90度
  context.rotate(-0.5 * Math.PI);
  context.translate(-width, 0);
  break;
}

信赖看了这些案例你已经把握了办法,更多出色请关注 百分百源码网 其它相干文章!

相干浏览:

H5手机扫码怎么实现

SVG如何开端实现多彩圆环倒计时

html5如何进行跨域通讯

以上就是H5如何调取相机照相并紧缩图片的细致内容,更多请关注 百分百源码网 其它相干文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有151人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板