google-cloud-vision-php
google-cloud-vision-php copied to clipboard
Base64 decoding failed.
Hello, I'm getting the following error response when trying to use this library;
array(1) {
["error"]=>
array(4) {
["code"]=>
int(400)
["message"]=>
string(110) "Invalid value at 'requests[0].image.content' (TYPE_BYTES), Base64 decoding failed for "data:image/jpg;base64,""
["status"]=>
string(16) "INVALID_ARGUMENT"
["details"]=>
array(1) {
[0]=>
array(2) {
["@type"]=>
string(41) "type.googleapis.com/google.rpc.BadRequest"
["fieldViolations"]=>
array(1) {
[0]=>
array(2) {
["field"]=>
string(25) "requests[0].image.content"
["description"]=>
string(110) "Invalid value at 'requests[0].image.content' (TYPE_BYTES), Base64 decoding failed for "data:image/jpg;base64,""
}
}
}
}
}
}
I've tried with multiple files and types (png and jpg) and get the same error.
I'm using the demo code;
$gcv->setImage("public/images/upsell/drinks1.jpg");
// 1 is Max result
$gcv->addFeature("LABEL_DETECTION", 1);
Doesn't seem to be anything I can do to get it to work.
So, I've managed to get this to work by getting rid of curl from the base64 decode, and also not using data urls. i.e;
/**
* @param string $path
*
* @return string
*/
public function convertImgtoBased64($path)
{
// $urlParts = pathinfo($path);
// $extension = $urlParts['extension'];
// $ch = curl_init();
// curl_setopt($ch, CURLOPT_URL, $path);
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// curl_setopt($ch, CURLOPT_HEADER, 0);
// $response = curl_exec($ch);
// curl_close($ch);
$response = file_get_contents($path);
$base64 = base64_encode($response);
return $base64;
}
This now works..