认知服务人脸 api 使用本地图像 - PHP

Cognitive Service Face api use local image - PHP

我正在尝试使用 PHP 将本地图像上传到人脸 API,我使用示例代码调用 api 并且在我使用时没问题JSON。但是当更改为八位字节流时​​它会卡住。我通过引用“https://pear.php.net/manual/en/package.http.http-request2.request.php

使用下面的代码
$image = "images/face-021.jpg";
$fp = fopen($image, 'r+');
$request->addUpload('stuff', $fp, 'custom.name', 'application/octet-stream');

我从 api 得到以下回复。

stdClass Object
(
[error] => stdClass Object
    (
        [code] => InvalidImageSize
        [message] => Image size is too small or too big.
    )
)

在将二进制数据传递给 api 之前,我是否遗漏了一些步骤?

图像大小仅为 956 KB,尺寸为 2448 x 2448

The Face API 不支持多部分 MIME 负载。您应该直接在请求正文中发送图像。

$image = 'images/face-021.jpg';
$fp = fopen($image, 'rb');
$request->setBody($fp);
$request->setHeader('Content-Type', 'application/octet-stream');
$request->setMethod(HTTP_Request2::METHOD_POST);
function microimg() { 
    //$GLOBALS['telegram']->ssendmessage($GLOBALS['userid'], $urlImage);      
    $request = new Http_Request2('https://westus.api.cognitive.microsoft.com/face/v1.0/detect');
    $url1 = $request->getUrl();

    $headers = array(`enter code here`
        'Content-Type' => 'application/json',
        'Ocp-Apim-Subscription-Key' => 'xxxxxxxxxxxxxxxxxx'
    );

    $request->setHeader($headers);

    $parameters = array(
    // Request parameters
    'returnFaceId' => 'true',
    'returnFaceLandmarks' => 'false',
    'returnFaceAttributes' => 'age',
    );

    $parameters = array();
    $url1->setQueryVariables($parameters);
    $request->setMethod(HTTP_Request2::METHOD_POST);

    //$request->setBody('{"url":  "http://miladddddddddddddd.ml/fillter_image/photos/file_93.jpg" }');
    $request->setBody('{"url":  "'.$GLOBALS['fileurl'].'" }');
    $err = $request->setBody;
    try {
        $response = $request->send();
        echo $response->getBody();
        $ed = $response->getBody();
        $GLOBALS['telegram']->ssendmessage($GLOBALS['userid'],$ed);
         $GLOBALS['telegram']->ssendmessage($GLOBALS['userid'], $GLOBALS['fileurl']);      
    } catch (HttpException $ex) {
        echo $ex;
    }
}


microimg($urlimg);