Posting An Image from Webcam to Azure Face Api

前端 未结 4 1916
广开言路
广开言路 2021-01-06 19:12

I am trying to upload an image that I get from my webcam to the Microsoft Azure Face Api. I get the image from canvas.toDataUrl(‘image/png’) which contains the Data Uri. I c

4条回答
  •  一生所求
    2021-01-06 19:53

    Oh you're in such luck, i've just (successfully!) attempted this 2 days ago.

    Sending base64-encoded JPEGs to Face API is seriously inefficient, The ratio of encoded output bytes to input bytes is 4:3 (33% overhead). Just send a byte array, it works, the docs mention it briefly.

    And try to read as JPEG not PNG, that's just wasting bandwidth for webcam footage.

        ...
    
        var dataUri = canvas.toDataURL('image/' + format);
        var data = dataUri.split(',')[1];
        var mimeType = dataUri.split(';')[0].slice(5)
    
        var bytes = window.atob(data);
        var buf = new ArrayBuffer(bytes.length);
        var byteArr = new Uint8Array(buf);
    
        for (var i = 0; i < bytes.length; i++) {
            byteArr[i] = bytes.charCodeAt(i);
        }
    
        return byteArr;
    

    Now use byteArr as your payload (data:) in $.ajax() for jQuery or iDontUnderStandHowWeGotHereAsAPeople() in any other hipster JS framework people use these days.

    The reverse-hipster way of doing it is:

    var payload = byteArr;
    
    var xhr = new XMLHttpRequest();
    xhr.open('POST', 'https://SERVICE_URL');
    xhr.setRequestHeader('Content-Type', 'application/octet-stream');
    xhr.send(payload);
    

提交回复
热议问题