Ios 科尔多瓦拍照不起作用
我正在开发一个可以拍照的应用程序,我正在与Cordova一起学习。我用了这个js:Ios 科尔多瓦拍照不起作用,ios,cordova,mobile,cordova-plugins,Ios,Cordova,Mobile,Cordova Plugins,我正在开发一个可以拍照的应用程序,我正在与Cordova一起学习。我用了这个js: var takePhoto = function() { navigator.camera.getPicture(onSuccess, onError, { quality: 30, destinationType: Camera.destinationType.FILE_URI, saveToPhotoAlbum: true, targetWidth: 1
var takePhoto = function() {
navigator.camera.getPicture(onSuccess, onError, { quality: 30,
destinationType: Camera.destinationType.FILE_URI,
saveToPhotoAlbum: true,
targetWidth: 1500,
targetHeight: 1500
});
function onSuccess(imageData) {
$('.photoPreview').show();
var image = document.getElementById('photoSrc');
image.src = "data:image/jpeg;base64," + imageData;
photoData = imageData;
$('#photoMessage').html('');
}
function onError(message) {
}
}
每当我点击按钮,它就不工作了,什么也没发生。我用于选择现有照片的函数也会发生同样的情况:
var selectPhoto = function() {
navigator.camera.getPicture(onSuccess, onFail, { quality: 30,
destinationType: Camera.destinationType.FILE_URI,
sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY,
targetWidth: 1500,
targetHeight: 1500
});
function onSuccess(imageData) {
$('.photoPreview').show();
var image = document.getElementById('photoSrc');
image.src = "data:image/jpeg;base64," + imageData;
photoData = imageData;
$('#photoMessage').html('');
}
function onFail(message) {
}
}
为了增加信息,我使用了这个
$('#selectPhoto').on('click', function() {
selectPhoto();
});
$('#takePhoto').on('click', function() {
takePhoto();
});
这个HTML
<button id="selectPhoto" class="photo-button">Select Existing Photo</button>
<button id="takePhoto" class="photo-button">Take New Photo</button>
选择现有照片
拍新照片
我正在使用最新的Cordova 6.4.0,Cordova-ios@4.3.1和最新的cordova插件相机
请让我知道我该怎么做。谢谢大家! 看起来您正在获取返回的imageData并将其作为base64数据直接注入DOM。如果您将相机选项更改为使用DATA_URL作为选项返回base 64,那么这将很好。总之:
navigator.camera.getPicture(onSuccess, onError, { quality: 30,
destinationType: Camera.destinationType.DATA_URL,
saveToPhotoAlbum: true,
targetWidth: 1500,
targetHeight: 1500
});
而不是:
navigator.camera.getPicture(onSuccess, onError, { quality: 30,
destinationType: Camera.destinationType.FILE_URI,
saveToPhotoAlbum: true,
targetWidth: 1500,
targetHeight: 1500
});
编辑:Jaze已经揭示了“destinationType”需要大写的真正原因。很容易错过!有关正确的解决方案,请参见下文:
navigator.camera.getPicture(onSuccess, onError, { quality: 30,
destinationType: Camera.DestinationType.DATA_URL,
saveToPhotoAlbum: true,
targetWidth: 1500,
targetHeight: 1500
});
看起来您正在获取返回的imageData并将其作为base64数据直接注入DOM。如果您将相机选项更改为使用DATA_URL作为选项返回base 64,那么这将很好。总之:
navigator.camera.getPicture(onSuccess, onError, { quality: 30,
destinationType: Camera.destinationType.DATA_URL,
saveToPhotoAlbum: true,
targetWidth: 1500,
targetHeight: 1500
});
而不是:
navigator.camera.getPicture(onSuccess, onError, { quality: 30,
destinationType: Camera.destinationType.FILE_URI,
saveToPhotoAlbum: true,
targetWidth: 1500,
targetHeight: 1500
});
编辑:Jaze已经揭示了“destinationType”需要大写的真正原因。很容易错过!有关正确的解决方案,请参见下文:
navigator.camera.getPicture(onSuccess, onError, { quality: 30,
destinationType: Camera.DestinationType.DATA_URL,
saveToPhotoAlbum: true,
targetWidth: 1500,
targetHeight: 1500
});
以前都是数据,我只是根据最新的Cordova文档跟踪文件。但我又试了一次,可惜还是没用。谢谢你,好的。好吧,现在你已经把它改回来了,你的代码对我来说很好。您能否以某种方式确认摄影机成功回调实际上正在启动,而不是onFail(或两者都没有)?我想你已经这样做了。在修改语法和Camera.DestinationType.DATA_URI方面做了很多测试,因为在大的“I”中已经起作用了!出于某种奇怪的原因,lol也在“.DestinationType”中围绕大写字母D或小写字母D玩。谢谢兄弟,到目前为止它还在工作。真奇怪!文档必须是错误的,否则它可能只是不同的iOS。抢手货我会编辑我的答案,这样其他人也能找到那个(奇怪的)解决方案。事实上,我知道它是什么。DATA_URI之所以有效,是因为默认值实际上是DATA_URL,所以因为它找不到DATA_URI,所以它只是默认为DATA_URL。真正的原因是您没有将DestinationType大写,因为它在文档中是大写的。它以前都是数据URL,我只是根据最新的Cordova文档跟踪文件URI。但我又试了一次,可惜还是没用。谢谢你,好的。好吧,现在你已经把它改回来了,你的代码对我来说很好。您能否以某种方式确认摄影机成功回调实际上正在启动,而不是onFail(或两者都没有)?我想你已经这样做了。在修改语法和Camera.DestinationType.DATA_URI方面做了很多测试,因为在大的“I”中已经起作用了!出于某种奇怪的原因,lol也在“.DestinationType”中围绕大写字母D或小写字母D玩。谢谢兄弟,到目前为止它还在工作。真奇怪!文档必须是错误的,否则它可能只是不同的iOS。抢手货我会编辑我的答案,这样其他人也能找到那个(奇怪的)解决方案。事实上,我知道它是什么。DATA_URI之所以有效,是因为默认值实际上是DATA_URL,所以因为它找不到DATA_URI,所以它只是默认为DATA_URL。真正的原因是您没有将DestinationType大写,因为它在文档中是大写的。