使用allowEdit标志在phonegap中本地裁剪图像

时间:2014-11-07 11:15:35

标签: android cordova android-camera phonegap-plugins cordova-3

我正在使用以下

phonegap 3.6.0-0.21.18
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js"></script>

我需要在phonegap中原生剪裁图像到固定尺寸的宽度:650px和高度:250px。我用它来实现它的调用,如下所示。出于某种原因,当目的地类型为DATA_URL时,phonegap看不到需要使用相机启动裁剪工具。

navigator.camera.getPicture(onPhotoDataSuccess, onFail, { 
quality: 45, 
allowEdit: true, <-- Forces the crop tool to appear if target sizes are different
targetWidth: 650,
targetHeight: 250,
destinationType: destinationType.DATA_URL, <--- Changed this to work
sourceType : Camera.PictureSourceType.CAMERA, 
correctOrientation: true
});

但是当我用相机更改destinationType:destinationType.FILE_URI时,裁剪工具会在照片捕获后打开以进行裁剪。

当我使用图库和相同参数尝试时,会出现裁剪工具

navigator.camera.getPicture(onPhotoURISuccess, onFail, { 
quality: 45, 
allowEdit: true, <-- Forces the crop tool to appear if target sizes are different
targetWidth: 650,
targetHeight: 250,
destinationType: destinationType.DATA_URL,  <-- Didnt have to change for the crop tool to open
sourceType: pictureSource.SAVEDPHOTOALBUM, 
mediaType : Camera.MediaType.PICTURE,
correctOrientation: true
});

我不明白相机和画廊电话之间的区别。这两个代码都使用目标类型作为destinationType.DATA_URL。对于相机,裁剪工具不会打开,而对于它来说。这是android或phonegap中的一些错误吗?

1 个答案:

答案 0 :(得分:0)

我认为是javascript中的性能问题。我没有尝试原生裁剪图像,但我在iOS中遇到内存问题。我捕获了base64字符串(DATA_URL)并使用javascript插件编辑它。我想你也需要base64图像。否则,FILE_URI会更好。

查看John Wargo's answer,也许可以帮助您

这个cordova文档:

  

注意:较新设备上的照片分辨率非常好。选中的照片   来自设备的画廊甚至没有降低质量   如果指定了质量参数。为避免常见的内存问题,   将Camera.destinationType设置为FILE_URI而不是DATA_URL。