1***@qq.com
1***@qq.com
  • 发布:2017-04-28 12:55
  • 更新:2017-05-01 19:19
  • 阅读:2437

如何通过H5+ Nativa.js调用原生相机并裁切头像问题

分类:Native.js

我用示例中的代码可以实现相册选择图片并裁切功能
http://ask.dcloud.net.cn/question/8314

但是我在华为荣耀7测试的时候发现图库中并没有直接拍照功能,所以我想知道如何修改代码实现直接先打开摄像头拍照然后跳转到图像裁切。请问该如何实现呢?

下面是我现在的代码:

var IMAGE_UNSPECIFIED = "image/*";  
                var PHOTOZOOM = 2; // 获取完图片返回key  
                var PHOTOLAT = 1; // 剪裁完毕后返回key  
                var main = plus.android.runtimeMainActivity();  
                var Intent = plus.android.importClass("android.content.Intent");  
                var MediaStore = plus.android.importClass("android.provider.MediaStore");  
                var File = plus.android.importClass("java.io.File");  
                var Uri = plus.android.importClass("android.net.Uri");  
                var intent = new Intent(Intent.ACTION_PICK, null);  
                intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, IMAGE_UNSPECIFIED);  
                main.startActivityForResult(intent, PHOTOZOOM);  
                main.onActivityResult = function(requestCode, resultCode, data) {  
                     var outPutPath = plus.io.convertLocalFileSystemURL("5566.jpg");  
                    if (PHOTOZOOM == requestCode) {  
                        var file = new File(outPutPath);  
                        // 输出目录uri  
                        var outPutUri = Uri.fromFile(file);   
                        if (data==undefined){  
                            mui.toast("您已取消操作");  
                            return false;  
                        }  
                        plus.android.importClass(data);  
                        plus.android.importClass(data);  
                        var uri = data.getData();  

                        var cropIntent = new Intent("com.android.camera.action.CROP");  
                        cropIntent.setDataAndType(uri, IMAGE_UNSPECIFIED);  
                        // 截图完毕后 输出目录  
                        cropIntent.putExtra(MediaStore.EXTRA_OUTPUT, outPutUri);  
                        cropIntent.putExtra("crop", "true");  
                        // aspectX aspectY 是宽高的比例  
                        cropIntent.putExtra("aspectX", 1);  
                        cropIntent.putExtra("aspectY", 1);  
                        // outputX outputY 是裁剪图片宽高  
                        cropIntent.putExtra("outputX", 160);  
                        cropIntent.putExtra("outputY", 160);  
                        cropIntent.putExtra("return-data", true);  
                        console.log(uri);  
                        main.startActivityForResult(cropIntent, PHOTOLAT);  
                    } else if (requestCode == PHOTOLAT) {  
                        // 判断 剪裁完后的图片输出是否存在  
                        var file = new File(outPutPath);  
                        var a = file.exists();  
                        console.log(file);  
                        console.log(a);  
                    }  
                };
2017-04-28 12:55 负责人:无 分享
已邀请:
d***@gmail.com

d***@gmail.com

http://www.cnblogs.com/devilyouwei/p/6322737.html

我是使用cropper裁剪的,拍照后会有缓存图片的,可以临时使用给他裁剪然后上传到服务器

 //拍照  
                function getImage() {  
                    var c = plus.camera.getCamera();  
                    c.captureImage(function(e) {  
                        //存储到本地  
                        plus.io.resolveLocalFileSystemURL(e, function(entry) {  
                            cutImage(entry.toLocalURL());  
                        }, function(e) {  
                            console.log("读取拍照文件错误:" + e.message);  
                        });  
                    }, function(s) {  
                        console.log("error" + s);  
                    }, {  
                        filename: "_doc/head.jpg"  
                    })  
                }
  • zhaoyari

    试了一下,程序报错了,求助,能否亮源码

    2017-06-22 19:15

该问题目前已经被锁定, 无法添加新回复