Microsoft Face API - приложение / поток октетов в Javascript - PullRequest
0 голосов
/ 05 ноября 2019

Я исчерпал все опции, представленные в нескольких вопросах, похожих на этот. Я звоню в Face API из javascript и пытаюсь отправить изображение, снятое с веб-камеры, в виде потока октетов.

У меня есть холст, который отображает изображение, снятое с веб-камеры, и используя приведенный ниже скрипт (благодаря потокам переполнения стека :)) для преобразования dataURI из холста в BLOB-объект.

    $.ajax({
                        url: '//detect?returnFaceAttributes=age,gender',
                        type: 'POST',
                        headers: {
                            "Authorization": "XXXXX"
                        },
                        processData: false,
                        contentType: "application/octet-stream",
                        data: that.makeblob(snapShotCanvas.toDataURL('image/jpeg'))
                    })
                    .done(function (data) {
                        console("success");
                    })
                    .fail(function () {
                        console("error");
                    });



    makeblob: function (dataURI) {
        // convert base64 to raw binary data held in a string
        // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this
        var byteString = atob(dataURI.split(',')[1]);
        // separate out the mime component
        var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]
        // write the bytes of the string to an ArrayBuffer
        var ab = new ArrayBuffer(byteString.length);
        // create a view into the buffer
        var ia = new Uint8Array(ab);
        // set the bytes of the buffer to the correct values
        for (var i = 0; i < byteString.length; i++) {
            ia[i] = byteString.charCodeAt(i);
        }
        // write the ArrayBuffer to a blob, and you're done
        var blob = new Blob([ab], {
            type: mimeString
        });
        return blob;
    },

Я получаю сообщение об ошибке

"{" requestId ":" 5dc19c1ce4b053181ca5c9dd "," message ":" Невозможно проанализировать составное тело "}"

Кажется, что полезная нагрузка запроса выглядит следующим образом. Не уверен, что именно так выглядит поток больших двоичных объектов.

ÿØÿàJFIFÿÛC 

ÿÛC ÿÀ @@ "ÿÄ ÿÄ?! 1AQ" aq2 # B ¡± RÁð $ Ñábñ3% 4CÿÄÿÄ '! 1A "Qa #2qBÿÚ? ÚkÔ: ¤pY · ¦ßßUV³vò] HÁÉ | ´Fï \ ÛÛd [nFï @ .. Z <3³cØÖGþdzk¨F ÁW * Ê% FàÌìH lSÙBÉ1f <code>§n3ö¦i.Q°Ë}ZÁ%¤UÉúd¨­h.ÒM²[Éê)~E=µº6¨Ê>Yø§Wʤ{®h&9·çJ¹B}ùqþA& ?ЪÄDC2üÛ{c½bVpS¸ASÑÆAÎ;yHÇÇÍN?¤àÚ´7'Ó¥or+y_ãJº¶Í»Á q »ÚdY0Fà ê @BÀu ¢ ÝÙË¡§Í

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...