感慨API Project Oxford base64图像
Emotion API Project Oxford base64 image
我正在尝试通过 JavaScript 在 PhoneGap 应用程序中调用 Emotion Api。我将图像编码为 base64,并验证数据可以通过其中一种在线工具进行解码。这是我在网上找到的代码。
var apiKey = "e371fd4333ccad2"; //(您可以在网站上获得一个免费密钥,这是为此处修改的)
//apiUrl: API 的基础URL。通过 API 文档了解其他 API 的含义
var apiUrl = "https://api.projectoxford.ai/emotion/v1.0/recognize";
"file"是base64字符串。
function CallAPI(file, apiUrl, apiKey)
{
// console.log("file=> " +file);
$.ajax({
url: apiUrl,
beforeSend: function (xhrObj) {
xhrObj.setRequestHeader("Content-Type", "application/octet-stream");
xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key", apiKey);
},
type: "POST",
data: file,
processData: false
})
.done(function (response) {
console.log("in call api a");
ProcessResult(response);
})
.fail(function (error) {
console.log(error.getAllResponseHeaders())
});
}
function ProcessResult(response)
{
console.log("in processrult");
var data = JSON.stringify(response);
console.log(data);
}
我得到了这个:
Expires: -1
Access-Control-Allow-Origin: *
Pragma: no-cache
Cache-Control: no-cache
Content-Length: 60
Date: Fri, 01 Apr 2016 13:34:32 GMT
Content-Type: application/json; charset=utf-8
X-Powered-By: ASP.NET
所以我尝试了他们的控制台测试页面。
https://dev.projectoxford.ai/docs/services/5639d931ca73072154c1ce89/operations/563b31ea778daf121cc3a5fa/console
我可以放入像您的 "example.com/man.jpg" 这样的图片,效果很好。但是如果我拍摄相同的图像并将其编码为 base 64 图像,我得到的只是 "Bad Body" 我已经尝试将其作为内容类型 "application/octet-stream" 和 "application/json" 并得到相同的错误。编码样本看起来像..和http请求
POST https://api.projectoxford.ai/emotion/v1.0/recognize HTTP/1.1
内容类型:application/octet-stream
主持人:api.projectoxford.ai
Ocp-Apim-订阅密钥:••••••••••••••••••••••••••••••••••••••••••
内容长度:129420
数据:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/...
我回来了:
编译指示:无缓存
缓存控制:无缓存
日期:2016 年 4 月 1 日星期五 16:23:09 GMT
X-Powered-By:ASP.NET
内容长度:60
内容类型:application/json;字符集=utf-8
过期:-1
{
"error":{
"code": "BadBody",
"message": "Invalid face image."
}
}
我现在不确定您是否可以从 Javascript 发送这样的图像。谁能告诉我我的 javascript 是否正确,或者他们是否可以将编码的 base64 字符串图像发送到网站。
感谢您的帮助
蒂姆
此 API 不接受图像的数据 URI。您需要做的是将其转换为二进制 blob。虽然此 适用于不同的牛津项目 API,但您可以应用相同的技术。
我正在尝试通过 JavaScript 在 PhoneGap 应用程序中调用 Emotion Api。我将图像编码为 base64,并验证数据可以通过其中一种在线工具进行解码。这是我在网上找到的代码。
var apiKey = "e371fd4333ccad2"; //(您可以在网站上获得一个免费密钥,这是为此处修改的)
//apiUrl: API 的基础URL。通过 API 文档了解其他 API 的含义 var apiUrl = "https://api.projectoxford.ai/emotion/v1.0/recognize";
"file"是base64字符串。
function CallAPI(file, apiUrl, apiKey)
{
// console.log("file=> " +file);
$.ajax({
url: apiUrl,
beforeSend: function (xhrObj) {
xhrObj.setRequestHeader("Content-Type", "application/octet-stream");
xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key", apiKey);
},
type: "POST",
data: file,
processData: false
})
.done(function (response) {
console.log("in call api a");
ProcessResult(response);
})
.fail(function (error) {
console.log(error.getAllResponseHeaders())
});
}
function ProcessResult(response)
{
console.log("in processrult");
var data = JSON.stringify(response);
console.log(data);
}
我得到了这个:
Expires: -1
Access-Control-Allow-Origin: *
Pragma: no-cache
Cache-Control: no-cache
Content-Length: 60
Date: Fri, 01 Apr 2016 13:34:32 GMT
Content-Type: application/json; charset=utf-8
X-Powered-By: ASP.NET
所以我尝试了他们的控制台测试页面。 https://dev.projectoxford.ai/docs/services/5639d931ca73072154c1ce89/operations/563b31ea778daf121cc3a5fa/console
我可以放入像您的 "example.com/man.jpg" 这样的图片,效果很好。但是如果我拍摄相同的图像并将其编码为 base 64 图像,我得到的只是 "Bad Body" 我已经尝试将其作为内容类型 "application/octet-stream" 和 "application/json" 并得到相同的错误。编码样本看起来像..和http请求
POST https://api.projectoxford.ai/emotion/v1.0/recognize HTTP/1.1 内容类型:application/octet-stream 主持人:api.projectoxford.ai Ocp-Apim-订阅密钥:•••••••••••••••••••••••••••••••••••••••••• 内容长度:129420
数据:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/...
我回来了:
编译指示:无缓存 缓存控制:无缓存 日期:2016 年 4 月 1 日星期五 16:23:09 GMT X-Powered-By:ASP.NET 内容长度:60 内容类型:application/json;字符集=utf-8 过期:-1
{ "error":{ "code": "BadBody", "message": "Invalid face image." } }
我现在不确定您是否可以从 Javascript 发送这样的图像。谁能告诉我我的 javascript 是否正确,或者他们是否可以将编码的 base64 字符串图像发送到网站。
感谢您的帮助 蒂姆
此 API 不接受图像的数据 URI。您需要做的是将其转换为二进制 blob。虽然此