Я использую «Плагин камеры Cordova», и он работает до такой степени, что я могу сделать один или несколько снимков и отобразить их в отдельных окнах.Но я хочу манипулировать изображениями с помощью передовых методов обработки сигналов, поэтому мне нужны пиксели в двумерном массиве.Я использую формат png, чтобы избежать сжатия, и «get-пиксели плагина Cordova», чтобы получить nDarray.Проблема заключается в соединении двух.Мой соответствующий код на данный момент:
function takePicture(val) // called by <button>
{
imageNum = val; // a global variable
theCamera.callCamera();
};
, который затем вызывает:
var theCamera =
{
image: null,
imgOptions:null,
initialize: function()
{
document.addEventListener('deviceready', this.onDeviceReady, false);
},
onDeviceReady: function()
{
console.log('camera onDeviceReady: ',cordova.file);
theCamera.image = document.querySelector(theImage);
},
callCamera: function ( )
{
theCamera.imgOptions =
{
quality : 100,
destinationType: Camera.DestinationType.FILE_URI,
sourceType: Camera.PictureSourceType.CAMERA,
allowEdit : false,
encodingType : Camera.EncodingType.PNG,
mediaType: Camera.MediaType.PICTURE,
targetWidth : 512,
targetHeight : 512,
correctOrientation: true,
cameraDirection : Camera.Direction.FRONT,
saveToPhotoAlbum : false
};
navigator.camera.getPicture( theCamera.imgSuccess, theCamera.imgFail, theCamera.imgOptions );
},
imgSuccess: function ( imageData )
{
// image returned from camera
console.log("imageData",imageData)
getPixels(imageData, function(err, pixels) {
if(err) {
console.log("Bad image path")
return
}
console.log("got pixels", pixels.shape.slice())
})
…
При успешном получении изображения «imageData» выглядит следующим образом:
[Log] imageData – "file:///var/mobile/Containers/Data/Application/993D18CE-C577-45DA-A77C-4479D931C634/tmp/cdv_photo_003.png" (cordova.js, line 1732)
Но попытка использовать getPixels () приводит к:
[Error] Origin null is not allowed by Access-Control-Allow-Origin.
[Error] Failed to load resource: Origin null is not allowed by Access-Control-Allow-Origin. (cdv_photo_003.png, line 0)
[Error] Cross-origin image load denied by Cross-Origin Resource Sharing policy.
[Log] Bad image path (cordova.js, line 1732)
Ошибка getPixels () для доступа к файлу, созданному навигатором.camera.getPicture (), приводит к сообщению об ошибке «Плохой путь к изображению».
Я подумал, что, возможно, использование «файла плагина Cordova» для чтения файла или первой записи, а затем чтения файла может решить эту проблему, но это кажется очень обходным решением.Есть ли более простой способ?
Цель - это отдельное приложение для планшетов: iOS и Android.