我目前正在创建使用Phonegap (Cordova) camera plugin的移动应用。它正确捕获图像并将其显示在我想要的位置,但我似乎无法设置targetWidth和targetHeight选项,如上所述。
targetWidth:用于缩放图像的宽度(以像素为单位)。必须使用 targetHeight。纵横比保持不变。 (数目)
targetHeight:以像素为单位的高度以缩放图像。必须使用 targetWidth。纵横比保持不变。 (数目)
据我了解,这将改变输出的图像宽度和高度。然而,它们似乎并没有起作用。
我在研究解决方案时发现的一个建议是说使用可选参数allowEdit
。在此我可以让用户选择预设的平方图像。然而,这似乎也无济于事。
请参阅下面的代码以供参考。
camera: function() {
//Fire up the camera!
navigator.camera.getPicture(onSuccess, onFail, {
destinationType: Camera.DestinationType.DATA_URL,
allowEdit: true,
targetWidth: 512,
targetHeight: 512
});
},
这两种尝试都没有按照我的意愿取得成功;捕获图像的固定宽度和高度。
如何在此图像上设置图像宽度和高度?
答案 0 :(得分:3)
试试这个我的朋友。删除allowEdit : true
camera: function() {
navigator.camera.getPicture(onSuccess, onFail, {
quality: 50,
targetWidth: 512,
targetHeight: 512,
destinationType: navigator.camera.DestinationType. DATA_URL,
saveToPhotoAlbum: true,
correctOrientation: true
});
}
答案 1 :(得分:1)
在捕获图像后,如何改变主意以调整图像大小?
答案 2 :(得分:0)
我使用以下内容并且效果很好。
{
quality: 25,
targetWidth: 500,
targetHeight: 500,
destinationType: Camera.DestinationType.FILE_URI,
sourceType: Camera.PictureSourceType.CAMERA,
correctOrientation: true
}
还可以根据自己的需要修改插件本机代码。如果你正在尝试Android。这是修复。
在执行功能中,两个参数默认设置为零,表示设备捕获的完整大小,否则如果某些值通过 args 参数传递,那么这些参数是考虑到了。
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
this.callbackContext = callbackContext;
if (action.equals("takePicture")) {
int srcType = CAMERA;
int destType = FILE_URI;
this.saveToPhotoAlbum = false;
this.targetHeight = 0;
this.targetWidth = 0;
this.encodingType = JPEG;
this.mediaType = PICTURE;
this.mQuality = 80;
this.mQuality = args.getInt(0);
destType = args.getInt(1);
srcType = args.getInt(2);
this.targetWidth = args.getInt(3);
this.targetHeight = args.getInt(4);
this.encodingType = args.getInt(5);
this.mediaType = args.getInt(6);
this.allowEdit = args.getBoolean(7);
this.correctOrientation = args.getBoolean(8);
this.saveToPhotoAlbum = args.getBoolean(9);
请参阅:https://github.com/apache/cordova-plugin-camera/blob/master/src/android/CameraLauncher.java#L115
如果可能的话,你也可以在原生代码中设置它并且工作正常。