php百度人脸识别param[image_template] is null使用BASE64图片类型json_decode返回NULL的处理解决方案

简介: php百度人脸识别param[image_template] is null使用BASE64图片类型json_decode返回NULL的处理解决方案

在使用BASE64图片类型过程中出现了NULL提示,经分析和解决过程如下。

一、转化图片为BASE64格式,注意图片的base64编码是不包含图片头的,如data:image/jpg;base64,因此用explode去除图片头。

$v1 = 'images/v1.jpg';
$v2 = 'images/v2.jpg';
$img_v1 = explode(',', imgToBase64($v1));
$img_v2 = explode(',', imgToBase64($v2));

二、$bodys接口中的JSON数据格式如下:

$bodys = "{\"image_template\":{\"image\":\"" . $img_v1[1] . "\",
\"image_type\":\"BASE64\",
\"quality_control\":\"NONE\"},
\"image_target\":{\"image\":\"$img_v2[1]\",
\"image_type\":\"BASE64\",
\"quality_control\":\"NONE\"}
}";

三、在测试过程中出现param[image_template] is null提示:

string(136) "{"error_code":222001,"error_msg":"param[image_template] is null","log_id":2010505101154,"timestamp":1587451915,"cached":0,"result":null}"

按照百度人脸识别文档,知道image_template类型错误,必须是array格式,因此b o d y s 格 式 有 错 误 , 需 要 转 换 bodys格式有错误,需要转换bodys格式有错误,需要转换bodys格式;


四、json中含有不可见字符,json_decode解析出错

for ($i = 0; $i <= 31; ++$i) {
    $bodys = str_replace(chr($i), "", $bodys);
}

五、完整代码:

$url = 'https://aip.baidubce.com/rest/2.0/face/v1/merge?access_token=' . $b->access_token;
$bodys = "{\"image_template\":{\"image\":\"" . $img_v1[1] . "\",
\"image_type\":\"BASE64\",
\"quality_control\":\"NONE\"},
\"image_target\":{\"image\":\"" . $img_v2[1] . "\",
\"image_type\":\"BASE64\",
\"quality_control\":\"NONE\"}
}";
for ($i = 0; $i <= 31; ++$i) {
    $bodys = str_replace(chr($i), "", $bodys);
}
$res = request_post($url, $bodys);
var_dump($res);


Done!

相关文章
|
7月前
|
计算机视觉
人脸识别活体检测之张张嘴和眨眨眼——Json_Parsing
人脸识别活体检测之张张嘴和眨眨眼——Json_Parsing
|
1月前
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
36 4
|
2月前
|
XML JSON 数据可视化
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
本文详细介绍了不同数据集格式之间的转换方法,包括YOLO、VOC、COCO、JSON、TXT和PNG等格式,以及如何可视化验证数据集。
284 1
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
|
4月前
|
JavaScript
TypeScript——不能将类型“HTMLElement | null”分配给类型“HTMLElement”
TypeScript——不能将类型“HTMLElement | null”分配给类型“HTMLElement”
67 4
|
4月前
|
JSON 人工智能 编译器
Go json 能否解码到一个 interface 类型的值
Go json 能否解码到一个 interface 类型的值
36 1
|
6月前
|
Java 数据处理 Apache
探讨Java中判断String类型为空和null的方法
探讨Java中判断String类型为空和null的方法
79 1
|
6月前
|
JSON 关系型数据库 MySQL
实时计算 Flink版产品使用问题之在使用CDAS语法同步MySQL数据到Hologres时,如果开启了字段类型宽容模式,MySQL中的JSON类型会被转换为什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
TS,数据类型概述,常见的基本数据类型有number/string/boolean/undefined/null,字符串用““,let food: string = ‘糖葫芦‘,布尔类型
TS,数据类型概述,常见的基本数据类型有number/string/boolean/undefined/null,字符串用““,let food: string = ‘糖葫芦‘,布尔类型
|
6月前
|
存储 JSON 关系型数据库
MySQL JSON 类型:功能与应用
MySQL JSON 类型:功能与应用
|
6月前
|
Java
Java中判断String类型为空和null的方法
Java中判断`String`变量是否为空或`null`需用`== null`和`.isEmpty()`。示例代码提供两种方法:`main`方法直接判断,`safeGetString`方法提供默认值。当输入为`null`或空时,返回默认值。代码包含三个测试案例,分别处理`null`、空字符串和非空非`null`字符串。
132 0