get-пиксели камеры Cordova - PullRequest
       49

get-пиксели камеры Cordova

0 голосов
/ 23 сентября 2018

Я использую «Плагин камеры 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.

...