使用html5+的plus调起相机拍照,使用canvas压缩图片,转成base64传到后台

这里写图片描述

html代码:

            <div class="form-com door">
                <label for="">门头照:</label>
                <a href="javascript:void(0);"  onclick="getImage(1)">

                    <img id="img1" class="img" src="" alt="">
                </a>

            </div>
            <div class="form-com licence">
                <label for="">营业执照:</label>
                <a href="javascript:void(0);" onclick="getImage(2)">
                    <!-- <input class="upload-img" type="file" onchange="setimgsrc(this,'img1');" accept="image/*" capture="camera"> -->
                    <img id="img2" class="img" src="" alt="">
                </a>

            </div>
            <div class="form-com shop-panorama">
                <label for="">店铺全景:</label>
                <a href="javascript:void(0);" onclick="getImage(3)">
                    <img id="img3" class="img" src="" alt="">
                </a>

            </div>

js代码:

// 初始化plus
    document.addEventListener( "plusready", onPlusReady, false );
    // 扩展API加载完毕,现在可以正常调用扩展API 
    function onPlusReady() {
        console.log("plusready");
    }

    // 调用手机的拍照功能
    function getImage(obj){ 
    var cmr = plus.camera.getCamera();
    cmr.captureImage(function(p){
        plus.io.resolveLocalFileSystemURL(p, function(entry){
            img=document.getElementById("img"+obj);
            img.src=entry.toLocalURL();

            img.style.opacity = 1;
        }, function(e){
            outLine('读取拍照文件错误:'+e.message);
        });
    }, function(e){

    }, {filename:'_doc/camera/',index:1});
}

// 用convas绘制图片
    function dealImage(path, obj, callback){
     var img = new Image();
     img.src = path;
     img.onload = function(){
      var that = this;
      // 默认按比例压缩
      var w = that.width,
       h = that.height,
       scale = w / h;
       w = obj.width || w;
       h = obj.height || (w / scale);
      var quality = 0.5;  // 默认图片质量为0.7
      //生成canvas
      var canvas = document.createElement('canvas');
      var ctx = canvas.getContext('2d');
      // 创建属性节点
      var anw = document.createAttribute("width");
      anw.nodeValue = w;
      var anh = document.createAttribute("height");
      anh.nodeValue = h;
      canvas.setAttributeNode(anw);
      canvas.setAttributeNode(anh); 
      ctx.drawImage(that, 0, 0, w, h);
      // 图像质量
      if(obj.quality && obj.quality <= 1 && obj.quality > 0){
       quality = obj.quality;
      }
      // quality值越小,所绘制出的图像越模糊
      var base64 = canvas.toDataURL('image/jpeg', quality );
      // 回调函数返回base64的值
      callback(base64);
     }
    }


    var time = null;
    var view = '';
    var view1 = '';
    var view2 = '';
    // 提交注册的信息
    $(document).on('click','.submit button',function(){
            dealImage($('#img1').attr('src'),$('#img1')[0],function(base641){
                view = base641;
            });

            dealImage($('#img2').attr('src'),$('#img2')[0],function(base642){
                view1 = base642;
            });

            dealImage($('#img3').attr('src'),$('#img3')[0],function(base643){
                view2 = base643;            
            });
            time = setTimeout(function(){
                httppost(view,view1,view2);
            },2000);

    });
到此处调用手机拍照,压缩并上传到后台完成,view,view1,view2分别是basse64
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值