【发布时间】:2017-11-22 12:32:36
【问题描述】:
我不明白以下代码出了什么问题,我正在使用 MS-Cognitive Services for Face API 并将图像转换为 blob(下面的代码)
var ab = [];
var img = new Image();
img.src = imageUri; // imageUri for FilePath
img.setAttribute('crossOrigin', 'anonymous');
var canvas = document.createElement("canvas");
canvas.width = $(window).width();
canvas.height = $(window).height();
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
var dataURL = canvas.toDataURL("image/jpeg");
alert(dataURL.replace(/^data:image\/(png|jpg);base64,/, ""));
var BASE64_MARKER = ';base64,';
var parts = dataURL.split(BASE64_MARKER);
var contentType = parts[0].split(':')[1];
var raw = window.atob(parts[1]);
var rawLength = raw.length;
var uInt8Array = new Uint8Array(rawLength);
for (var i = 0; i < rawLength; ++i) {
uInt8Array[i] = raw.charCodeAt(i);
} var bb = new Blob([new Uint8Array(ab)]);
并按照代码进行人脸检测的 Ajax 调用(MS 认知服务)
var params = {
"returnFaceId": "true",
"returnFaceLandmarks": "false",
"returnFaceAttributes": "{string}",
};
$.ajax({
url: "https://australiaeast.api.cognitive.microsoft.com/face/v1.0/detect?" + $.param(params),
beforeSend: function (xhrObj) {
xhrObj.setRequestHeader("Content-Type", "application/octet-stream");
xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key", "KEY_GOES_HERE");
},
type: "POST",
data: bb,
processData: false,
})
.done(function (data) {
alert("Response Done::" +data);
})
.fail(function (jqXHR, textStatus, errorThrown) {
alert(" Status:: " + jqXHR.status + " ResponseText is:: " + jqXHR.statusText + "");
});
我收到 400-Bad Request 的响应。我不明白我在哪里犯错。?顺便说一句,整个事情都具有相同的功能。 任何人都可以帮我吗?谢谢。
【问题讨论】:
-
我想我在生成 Blob 时遇到了一些问题。
-
是的。如果不使用“fetch”,我从来没有设法让它工作
-
除了“获取”还有其他选择吗??
标签: javascript jquery html ajax microsoft-cognitive