使用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(说明来意) ~

时间: 2024-08-28 17:01:52

使用PhoneGap裁剪和压缩图片并上传(安卓版)的相关文章

ios中摄像头/相册获取图片,压缩图片,上传服务器方法总结

相册 iphone的相册包含摄像头胶卷+用户计算机同步的部分照片.用户可以通过UIImagePickerController类提供的交互对话框来从相册中选择图像.但是,注意:相册中的图片机器路径无法直接从应用程序访问,只能通过终端用户去选择和使用相册图片 应用程序包 应用程序包可能会将图像与可执行程序.Info.plist文件和其他资源一同存储.我们可以通过本地文件路径来读取这些基于包的图像并在应用程序中显示它们. 沙盒 借助沙盒,我们可以把图片存储到Documents.Library.tmp文

html5压缩图片并上传

手机端图片有很大的,上传的时候很慢,这时候就要压缩一下了,有一个开源的js可以压缩图片的大小,开源地址如下:https://github.com/think2011/localResizeIMG3 代码如下: // 上传图片 function uploadFile(path) { var type = plus.storage.getItem("upload_goods_image"); //选择成功 $("#heisebg").removeClass("

如何有效实现前端压缩图片并上传功能

随着现在手机的像素越来越高,很多照片动辄几兆甚至十几兆,上传后在服务器端压缩已经越来越不能满足当今的需求.这对于许多技术人员来说,处理起来这样的问题往往不知道该怎么下手,那么下面就跟大家讲解一下如何在前端进行图片压缩后上传到服务器. 以上传单张图片为例,多张图片同理,多嵌套一层循环即可.代码实现如下: html: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta

Xamarin.Android 压缩图片并上传到WebServices

随着手机的拍照像素越来越高,导致图片赞的容量越来越大,如果上传多张图片不进行压缩.质量处理很容易出现OOM内存泄漏问题. 最近做了一个项目,向webservices上传多张照片,但是项目部署出来就会出现闪退现象,后来经行调试发现图片没有进行压缩,一张图片大小为2M,然而webservices没法接搜多个大图片,所以需要改下配置文件,我这里改为40M. <system.web> <httpRuntime maxRequestLength = "40960" useFul

javaScript:压缩图片并上传

html代码: <input id="file" type="file" name="filesName"> js代码: var fileElement = document.getElementById('#file'); fileElement.onchange = function(){ var file = event.target.files[0]; var upload = new uploadThumbnail({ //

微信小程序压缩图片并上传到服务器(拿去即用)

这里注意一下,图片压缩后的宽度是画布宽度的一半 canvasToTempFilePath 创建画布的时候会有一定的时间延迟容易失败,这里加setTimeout来缓冲一下 这是单张图片压缩,多张的压缩暂时还没有成功,保存到服务器上后是空白的,如有大神望指点一二(>人<:) <canvas canvas-id='photo_canvas' style='width:1000rpx;height:{{canvas_h}}px' class='myCanvas'></canvas&g

HTML5 本地裁剪图片并上传至服务器(转)

很多情况下用户上传的图片都需要经过裁剪,比如头像啊什么的.但以前实现这类需求都很复杂,往往需要先把图片上传到服务器,然后返回给用户,让用户确定裁剪坐标,发送给服务器,服务器裁剪完再返回给用户,来回需要 5 步.步骤繁琐不说,当很多用户上传图片的时候也很影响服务器性能. HTML5 的出现让我们可以更方便的实现这一需求.虽然这里所说的技术都貌似有点过时了(前端界的“过时”,你懂的),但还是有些许参考价值.在这里我只说一下要点,具体实现同学们慢慢研究. 下面奉上我自己写的一个demo,在输入框中选好

js图片前端压缩多图上传(旋转其实已经好了只是手机端有问题要先压缩再旋转)

var filechooser = document.getElementById("choose"); // 用于压缩图片的canvas var canvas = document.createElement("canvas"); var ctx = canvas.getContext('2d'); // 瓦片canvas var tCanvas = document.createElement("canvas"); var tctx = tC

微信小程序裁剪图片后上传

上传图片的时候调起裁剪页面,裁剪后再回调完成上传; 图片裁剪直接用we-cropper   https://github.com/we-plugin/we-cropper we-cropper使用详细方法参考博文  https://we-plugin.github.io/we-cropper/#/ chooseImage: function(e){ var _this = this; wx.chooseImage({ count: 1, sizeType: ['original', 'compr