Emotion API Project Оксфорд base64 изображение

Я пытаюсь позвонить в Emotion Api через JavaScript в приложении PhoneGap. Я закодировал изображение в base64 и убедился, что данные могут быть декодированы одним из онлайн-инструментов. это код, который я нашел в сети, чтобы использовать.

var apiKey = "e371fd4333ccad2"; // (вы можете получить бесплатный ключ на сайте, для которого здесь есть изменения)

// apiUrl: базовый URL для API. Узнайте, что это такое для других 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", и оно отлично работает. но если я беру одно и то же изображение и кодирую его как базовое изображение 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-Subscription-Key: •••••••••••••••••••••••••••••••• Content-Length: 129420

данные: изображение / JPEG;base64,/9J /4AAQSkZJRgABAQAASABIAAD/...

Я вернусь:

Pragma: no-cache Cache-Control: no-cache Дата: пт, 01 апр 2016 16:23:09 GMT X-Powered-By: ASP.NET Длина содержимого: 60 Тип содержимого: приложение /json; charset=utf-8 Истекает: -1

{"error": {"code": "BadBody", "message": "Недопустимое изображение лица." } }

Теперь я не уверен, можете ли вы отправить изображение, подобное этому, или нет из Javascript. Может кто-нибудь сказать мне, если мой javascript правильный или они могут отправить закодированное строковое изображение base64 на сайт.

спасибо за твою помощь тим

1 ответ

Решение

Этот API не принимает URI данных для изображений. Что вам нужно сделать, это преобразовать его в двоичный двоичный объект. Хотя этот ответ предназначен для другого Project Oxford API, вы можете применить ту же технику.

Другие вопросы по тегам