使用PhoneGap裁剪和压缩图片并上传(安卓版)

安装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:291445576(说明来意) ~

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。