android调用js sdk,jssdk里面的拍照接口怎么调用?

2016-8-9更新:

这个答案被踩了几次,为了不让后来人误会,我觉得有必要声明下:

题主在题目中并没有指明是在微信开发环境下,而我个人因为才疏学浅从未做过微信中的开发,所以并没有理解jssdk的含义,导致了回答的内容和题主的意思并不一致。

本来想删掉这份回答,想了想之后觉得未来也许能给一些寻求js调用相册/相机的人产生一点点的帮助,所以并没有删除这篇答案。我只是尽可能的希望自己能够帮助到别人。

祝好。

以下是我的回答:

js无法直接调用,请利用浏览器HTML相关标签操作,input[type="file"]可以打开相机/相册并且上传文件:

直接调用相机

调用相机 图片或者相册

调用相册

注意上面的某些accpet设置在一些android机浏览器上并不会挂起,比如调用相机。重点在于accept属性,大概兼容性参见这里《accept 兼容性》。

如果想通过js直接调用系统相机和相册是做不到,可以结合hybrid做(移动app内嵌网页,移动app给js注入调用相机/相册的接口,js调用接口,app挂起相册)。

在input[type=file]中上传获取的图片(file),可以采用这种方式获得预览:

//file => input上传获取的文件(file),callback=> 回调函数

var readFile = function (file, callback) {

var render = new FileReader();

render.onload = function (e) {

callback(render.result/*图片生成的DataURL,放到img.src使用即可*/, render, e);

};

render.readAsDataURL(file);

}

也可以采用这种方式进行压缩裁剪(android某些机器不支持):

var options = {

imgWidth: 100,

imgHeight: 100

};

//src是图片路径

var compressor = function (src, MIMEType, callback) {

var img = new Image;

img.onload = function () {

var cvs = document.createElement('canvas');

cvs.height = options.imgHeight;

cvs.width = options.imgWidth;

var context = cvs.getContext && cvs.getContext('2d');

//使用canvas压缩图片

if (!cvs.getContext) {

callback();

return;

};

//进行图片裁剪算法

var drawInfo = vmUpload.drawImageInfo();

//使用drawImage进行压缩,参考API:https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/drawImage

context.drawImage(img,

0,//左上角起始x轴

0,//左上角起始y轴

options.imgWidth,//在目标画布上绘制图像的宽度

options.imgHeight,//在目标画布上绘制图像的高度

0,//需要绘制到目标上下文中的x轴

0,//需要绘制到目标上下文中的y轴

options.imgWidth,//需要绘制到目标上下文中的源图像的矩形选择框的宽度

options.imgHeight)//需要绘制到目标上下文中的源图像的矩形选择框的高度

//压缩图片,MIME类型应该从文件读取

callback(cvs.toDataURL(MIMEType, 0.6));

};

img.src = src;

}

如果您觉得这段内容不错,请为我点个赞,我的个人网站:《听说》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值