首页 > 其他分享 >plus.camera.getCamera()调用相机、摄像头

plus.camera.getCamera()调用相机、摄像头

时间:2022-09-20 14:48:35浏览次数:46  
标签:function name getCamera camera plus file var 图片

<div style="line-height: 1.5rem;" class="image-item space" οnclick="getImage()">拍照 </div>
<div style="line-height: 1.5rem;" class="image-item space" οnclick="getVideo()">录像 </div>
<div style="line-height: 1.5rem;" class="image-item space" οnclick="getPhoto()">从相册选择 </div>

  

1、调用相机

(1)、/调用手机摄像头并拍照  
   function getImage() {      
       var cmr = plus.camera.getCamera();    
       cmr.captureImage(function(p) {    
           plus.io.resolveLocalFileSystemURL(p, function(entry) {    
               compressImage(entry.toLocalURL(),entry.name);    
           }, function(e) {    
               plus.nativeUI.toast("读取拍照文件错误:" + e.message);    
           });    
       }, function(e) {    
       }, {    
           filter: 'image'   
       });    
   }

(2)、//图片压缩
function compressImage(url,filename){    
       var name="_doc/upload/"+filename;  
       plus.zip.compressImage({    
               src:url,//src: (String 类型 )压缩转换原始图片的路径    
               dst:name,//压缩转换目标图片的路径    
               quality:90,//quality: (Number 类型 )压缩图片的质量.取值范围为1-100    
               overwrite:true,//overwrite: (Boolean 类型 )覆盖生成新文件
               width:'250',
                height:'320'
                
           },    
           function(zip) {  
               //页面显示图片  
               showPics(zip.target,name); 
           },function(error) {    
               plus.nativeUI.toast("压缩图片失败,请稍候再试");    
       });    
   }

(3)、//图片展示
 function showPics(url,name){ 
     //根据路径读取到文件   
       plus.io.resolveLocalFileSystemURL(url,function(entry){  
           entry.file( function(file){  
               var fileReader = new plus.io.FileReader();  
               fileReader.readAsDataURL(file);  
               fileReader.onloadend = function(e) {  
                    var picUrl = e.target.result.toString();  
                    var img1 = $("#img1").attr("src");//获取页面存放图片标签的值
                    if(img1 =="" || img1 == undefined){    
                        $("#img1").attr("src",picUrl);//将图片base64编码赋值给img标签
                    }  
               }  
           });  
      });   
   }

  

2、调用摄像头录像

(1)、调用摄像头录像

function getVideo(){
    var cmr = plus.camera.getCamera();
    cmr.startVideoCapture(function(p){
        plus.io.resolveLocalFileSystemURL(p, function(entry){
            entry.file( function(file){
                var fileReader = new plus.io.FileReader();
                showVideo(file);//视频展示
           } );
        }, function(e){
            alert('读取录像文件错误:'+e.message);
        } );
    }, function(e){
    }, {filename:'_doc/camera/',index:1});
}

(2)、/视频展示
function showVideo(file){
    $("#video0").remove();//每次展示视频前先删除上一次生成的video
    var fileSize =(file.size) / (1024*1024);//转换成M
     fileSize = fileSize.toFixed(1);//保留小数点后一位
     if(fileSize > 30){
         alert('上传视频不能大于30M');    
     }else{        
        var vde = '<video style="height:80px; width:100px; object-fit:fill" id="video0" autoplay="autoplay" x5-playsinline="" playsinline="" webkit-playsinline="" loop="loop"></video>';                    
         $(".photo").append(vde);        
        var reader = new plus.io.FileReader();
        reader.readAsDataURL(file);//调用自带方法进行转换  
        reader.onload = function(e) {  
            $("#video0").attr("src", e.target.result);//将视频base64编码放入标签
        };        
     }        
}

  

3、调用系统文件夹(相册) 

(1)、//相册选择图片
function getPhoto(){
    plus.gallery.pick(function(path){
        var name = path.substring(path.lastIndexOf("/")+1); 
           compressPhoto(path,name);//图片压缩
    }, function(e){
    }, {filter:'image'});
}

(2)、//图片压缩
function compressPhoto(url,filename){ 
       var name="_doc/upload/"+filename;  
       plus.zip.compressImage({    
               src:url,//src: (String 类型 )压缩转换原始图片的路径    
               dst:name,//压缩转换目标图片的路径    
               quality:90,//quality: (Number 类型 )压缩图片的质量.取值范围为1-100    
               overwrite:true,//overwrite: (Boolean 类型 )覆盖生成新文件
               width:'250',
               height:'320'                    
           },    
           function(zip) {  
               //页面显示图片  
               showPhoto(zip.target,name); 
           },function(error) {    
               plus.nativeUI.toast("压缩图片失败,请稍候再试");    
       });    
   }

(3)、//图片展示
 function showPics(url,name){ 
     //根据路径读取到文件   
       plus.io.resolveLocalFileSystemURL(url,function(entry){  
           entry.file( function(file){  
               var fileReader = new plus.io.FileReader();  
               fileReader.readAsDataURL(file);  
               fileReader.onloadend = function(e) {  
                    var picUrl = e.target.result.toString();  
                    var img1 = $("#img1").attr("src");//获取页面存放图片标签的值
                    if(img1 =="" || img1 == undefined){    
                        $("#img1").attr("src",picUrl);//将图片base64编码赋值给img标签
                    }  
               }  
           });  
      });   
   }

  

标签:function,name,getCamera,camera,plus,file,var,图片
From: https://www.cnblogs.com/xmyd/p/16710956.html

相关文章

  • Mybatis plus 查询
    1、子查询//管理主管查询IntegermanageSupervisor=query.getManageSupervisor();if(manageSupervisor!=null){......
  • 确定有mono-libgdiplus包,但Homebrew找不到?
    引言brewinstallmono-libgdiplus找不到包。搜索类似报名、搜索已经删除的包、搜索github都找不到。Warning:Noavailableformulawiththename"mono-libgdiplus".......
  • 【vue3】element-plus组件国际化随时切换语言
    背景我们可以通过ui组件库来统一调整组件的语言设置,比如统一设置成中文或者英文步骤引入element-plus相关的语言包。这里使用中文通过el-config-provider组件进行配......
  • mybatis-plus修改时将字段(比如备注)的内容清空(取消字段的空值过滤)
     4110次阅读 it • bug及解决方案 2019-12-09这次遇到的是修改问题,我想将备注改为空,或者说把以前的备注删掉。可是mybatisplus已经做了空值过滤,也就是如果你不......
  • mybatis-plus分页失效原因
    mybatis-plus分页失效原因一、在启动类添加如下配置@SpringBootApplication@MapperScan("com.**.mapper")publicclassDemoApplication{publicstaticvoidma......
  • 《C++ Primer Plus 学习笔记》目录
    本篇为随笔《C++PrimerPlus学习笔记》的目录第1章预备知识第2章开始学习C++第3章处理数据第4章复合类型第5章循环和表达式第6章分支语句和逻辑运算符第7章......
  • EPPlus使用方法---Excel处理我觉得超级好用
    目前只是用到导出Excel功能,导出大规模数据量速度也很快,而且比较容易操作(最起码导出是,暂时没有用到处理已存在的excel功能,有人说NPOI也好用,试了一下,最起码导出这个不如EPPlu......
  • MyBatis-Plus插入值后返回主键
    LZ做练手设计的时候有这样一个订单需求,先插入订单表数据(t_order),再写入订单详情表(t_orderDetail),详情表需要有一个与t_order的外键约束t_order(oid   auto_in......
  • Mybatist-plus在开发过程中遇到的问题和解决办法
    1,总是老忘记一些LambdaQueryWrapper常用的表达式   2,minmaxsum等聚合函数的查询方法QueryWrapper<ParagonPrintLog>queryWrapper=newQueryWrappe......
  • mybatsi-plus的SQL分析打印
    p6spyp6spy依赖引入<dependency><groupId>p6spy</groupId><artifactId>p6spy</artifactId><version>最新版本</version></dependency>application.yml配置:......