安装phonegap的camera插件后,可以对从图片库选择图片进行裁剪或压缩操作,但插件本身有些问题,经过改进,现在可以顺利完成上述功能。
安装方法
1 首先使用命令行安装camera插件:
phonegap plugin add org.apache.cordova.camera
2 安装成功后,下载下面的CameraLauncher.java文件,将插件包中的同名文件替换掉:
http://phonegap.jiusem.net/camera/src/android/CameraLauncher.java
使用方法
1 裁剪图片。下面的代码演示了完整的将图片裁剪为100*100并上传到服务端的过程,请注意高亮的部分:
$(function(){ $('#b1').click(function(){ navigator.camera.getPicture(function(imgData){ $('#pInfo').html(imgData); //$('#img').attr('src',imgData); var options = new FileUploadOptions(); options.fileKey="file"; options.fileName="test.jpg"; options.mimeType="image/jpeg"; var ft = new FileTransfer(); ft.upload(imgData, encodeURI("http://...test.php"), win, fail, options); }, function(){ }, { quality:50, destinationType: Camera.DestinationType.FILE_URL , sourceType : 0,
//====关键设置======================================= allowEdit:true, //出现裁剪框 targetWidth:100,//图片裁剪高度 targetHeight:100 });//图片裁剪高度
//======关键设置========================================= }); //上传成功的回调 var win = function(r) { console.log(r); } //上传失败的回调 var fail = function(error) { alert("上传失败"); } });
2 压缩图片。下面的代码演示了将图片大小限制在768*1280以内并上传的过程,最后图片不一定都是768*1280,但宽高都不会超过设置的值,请注意高亮部分:
$(function(){ $('#b1').click(function(){ navigator.camera.getPicture(function(imgData){ $('#pInfo').html(imgData); //$('#img').attr('src',imgData); var options = new FileUploadOptions(); options.fileKey="file"; options.fileName="test.jpg"; options.mimeType="image/jpeg"; var ft = new FileTransfer(); ft.upload(imgData, encodeURI("http://...test.php"), win, fail, options); }, function(){ }, { quality:50, destinationType: Camera.DestinationType.FILE_URL , sourceType : 0, //=====关键部分========================================= targetWidth:768, //图片输出宽度 targetHeight:1280 //图片输出高度
//======关键部分========================================== }); }); //上传成功的回调 var win = function(r) { console.log(r); } //上传失败的回调 var fail = function(error) { alert("上传失败"); } });
上面的例子含有文件上传,如果需要测试完整的例子,你还需要安装File Transfer插件,文件上传的服务端代码和普通的表单上传没有分别。
欢迎加QQ群交流:454566813 <说明来自开源中国>