2016-12-15 59 views
1

我正在使用PHP SDK上傳本地文件(不是S3)以在AWS Rekognition中進行解析。但是,圖像斑點不起作用,我收到消息:InvalidImageFormatException: "Invalid image encoding"AWS Rekognition PHP SDK提供無效圖像編碼錯誤

我試過了多張圖片(the docs say JPEGs and PNGs are accepted),但都沒有成功。

我的代碼是:

$client = new RekognitionClient($credentials); 

$im = file_get_contents('/app/image1.png'); 
$imdata = base64_encode($im); 

$result = $client->detectLabels(
    [ 
     'Image' => [ 
      'Bytes' => $imdata, 
     ] 
    ] 
); 

我是否正確編碼呢? docs非常含糊。

我發現SO關於'無圖像內容'的問題,但沒有關於無效格式的問題。

任何想法?謝謝!

+0

檢查BASE64_ENCODE()不返回FALSE。另外,嘗試舊式數組:arrayLine(array('Image'=> array('Bytes'=> $ imdata))) –

+0

@SergeyKovalev Yep,'base64_encode()'確實返回數據,不幸的是改變了數組風格也沒有工作:/ – samiles

+0

如果你跳過'base64_encode()'部分怎麼辦? –

回答

1

我結束了使用Imagick而不是base64_encode路線。我懷疑這不是最好的方法,但它確實很好!

$client = new RekognitionClient($credentials); 

$image = new Imagick('/app/image1.png'); 
$imdata = $image->getImageBlob(); 

$result = $client->detectLabels(
    [ 
     'Image' => [ 
      'Bytes' => $imdata, 
     ] 
    ] 
); 
0
$s3 = new \Aws\Rekognition\RekognitionClient([ 
     'version' => 'latest', 
     'region' => 'us-east-1', 
     'credentials' => [ 
      'key' => 'BKxxxxxxxx', 
      'secret' => 'GYxxxxxxxxxxxxxxxxxx' 
     ] 
    ]); 

    $result = $s3->detectLabels([ 
     'Image' => [ // REQUIRED 
      'Bytes' => file_get_contents("http://img13.deviantart.net/5a3b/i/2010/249/b/a/__michelangelo__s_flying_horse___by_dark_oak_trails-d2y5iej.jpg"), 
     ], 
     'MaxLabels' => 10, 
     'MinConfidence' => 90, 
    ]); 

不需要使用他們的SDK時base64_enconde圖像。

http://docs.aws.amazon.com/rekognition/latest/dg/API_Image.html

您的代碼可能並不需要,如果你使用的是AWS SDK編碼圖像字節...

相關問題