2017-09-06 12 views
1

私はAzure OCRサービスを使用して画像のテキストを元に戻します( https://docs.microsoft.com/de-de/azure/cognitive-services/Computer-vision/QuickStarts/PHP)。PHP Azure OCR - ローカルファイルを使用

これまでのところすべてが起動していましたが、今は既にアップロードされているファイルの代わりにローカルファイルを使用したいと思います。

$url->setQueryVariables($parameters); 
$request->setMethod(HTTP_Request2::METHOD_POST); 
// Request body 
$request->setBody("{body}"); // Replace with the body, for example, "{"url": "http://www.example.com/images/image.jpg"} 

残念ながら、PHPでPOSTリクエストの本文として生のバイナリを渡す方法がわかりません。

答えて

1

まず、ローカルファイルを参照するときは、ヘッダに'Content-Type': 'application/octet-stream'を使用し、ストリームリソースを使用する要求をボディとして送信します。

<?php 

require 'vendor/autoload.php'; 

$resource = fopen('./Shaki_waterfall.jpg', 'r'); 

$client = new \GuzzleHttp\Client();  
$res = $client->request('POST', 'https://westus.api.cognitive.microsoft.com/vision/v1.0/analyze', [ 
    'query' => [ 
     'visualFeatures' => 'Categories', 
     'details' => '', 
     'language' => 'en' 
    ], 
    'headers' => [ 
     'Content-Type' => 'application/octet-stream', 
     'Ocp-Apim-Subscription-Key' => '<Ocp-Apim-Subscription-Key>' 
    ], 
    'body' => $resource 
]); 

echo $res->getBody(); 

HTTP_Request2を使用して::HTTP_Request2` `使用してのサンプルコードで更新

<?php 

require_once 'HTTP/Request2.php'; 

$request = new Http_Request2('https://westus.api.cognitive.microsoft.com/vision/v1.0/analyze'); 
$url = $request->getUrl(); 

$headers = array(
    'Content-Type' => 'application/octet-stream', 
    'Ocp-Apim-Subscription-Key' => '<Ocp-Apim-Subscription-Key>', 
); 
$request->setHeader($headers); 

$parameters = array(
    'visualFeatures' => 'Categories', 
    'details' => '', 
    'language' => 'en', 
); 
$url->setQueryVariables($parameters); 

$request->setMethod(HTTP_Request2::METHOD_POST); 
$request->setBody(fopen('./Shaki_waterfall.jpg', 'r')); 

try { 
    $response = $request->send(); 
    echo $response->getBody(); 

} catch (HttpException $ex) { 
    echo $ex; 
} 
+0

は、ここにあなたの参考のためにGuzzleを使用して、私の作業コードです。 –

関連する問題