使用PHP SDK图片审核接口检测图片中是否包含风险内容。
背景信息
图片审核支持同步检测和异步检测两种方式。
- 同步检测实时返回检测结果。
- 异步检测需要您轮询结果或者通过callback回调通知获取检测结果。
支持传入检测的图片内容媒介包括互联网图片URL、本地图片文件路径和二进制图片文件流。
准备工作
在进行具体的服务调用之前,请完成以下准备工作:
- 创建阿里云AccessKey。关于阿里云AccessKey的具体操作,请参见创建AccessKey。
- 安装PHP依赖。关于安装PHP依赖的具体操作,请参见安装PHP依赖。
(推荐)图片同步检测
接口 | 描述 | 支持的地域 |
---|---|---|
ImageSyncScanRequest | 提交图片同步检测任务,对图片进行多个风险场景的识别,包括色情、暴恐涉政、广告、二维码、不良场景、Logo(商标台标)识别。 |
|
示例代码
- 传图片URL进行检测
<?php require_once 'aliyuncs/aliyun-oss-php-sdk/autoload.php'; include_once 'aliyuncs/aliyun-php-sdk-core/Config.php'; use Green\Request\V20180509 as Green; use Green\Request\Extension\ClientUploader; // 请替换成您的AccessKey信息。 $iClientProfile = DefaultProfile::getProfile("cn-shanghai", "yourAccessKeyId", "yourAccessKeySecret"); DefaultProfile::addEndpoint("cn-shanghai", "cn-shanghai", "Green", "green.cn-shanghai.aliyuncs.com"); $client = new DefaultAcsClient($iClientProfile); $request = new Green\ImageSyncScanRequest(); $request->setMethod("POST"); $request->setAcceptFormat("JSON"); $task1 = array('dataId' => uniqid(), 'url' => 'http://您的图片.jpg' ); // 设置待检测的图片,一张图片对应一个检测任务。 // 多张图片同时检测时,处理时间由最后一张处理完的图片决定。 // 通常情况下批量检测的平均响应时间比单张检测要长。一次批量提交的图片数越多,响应时间被拉长的概率越高。 // 代码中以单张图片检测作为示例,如果需要批量检测多张图片,请自行构建多个检测任务。 // 一次请求中可以同时检测多张图片,每张图片可以同时检测多个风险场景,计费按照单图片单场景检测叠加计算。 // 例如,检测2张图片,场景传递porn和terrorism,则计费按照2张图片鉴黄和2张图片暴恐检测计算。 $request->setContent(json_encode(array("tasks" => array($task1), "scenes" => array("porn","terrorism")))); try { $response = $client->getAcsResponse($request); print_r($response); if(200 == $response->code){ $taskResults = $response->data; foreach ($taskResults as $taskResult) { if(200 == $taskResult->code){ $sceneResults = $taskResult->results; foreach ($sceneResults as $sceneResult) { $scene = $sceneResult->scene; $suggestion = $sceneResult->suggestion; // 根据scene和suggetion设置后续操作。 // 根据不同的suggestion结果做业务上的不同处理。例如,将违规数据删除等。 } }else{ print_r("task process fail:" + $response->code); } } }else{ print_r("detect not success. code:" + $response->code); } } catch (Exception $e) { print_r($e); }
- 传本地图片文件进行检测
<?php require_once 'aliyuncs/aliyun-oss-php-sdk/autoload.php'; include_once 'aliyuncs/aliyun-php-sdk-core/Config.php'; use Green\Request\V20180509 as Green; use Green\Request\Extension\ClientUploader; // 请替换成您的AccessKey信息。 $iClientProfile = DefaultProfile::getProfile("cn-shanghai", "yourAccessKeyId", "yourAccessKeySecret"); DefaultProfile::addEndpoint("cn-shanghai", "cn-shanghai", "Green", "green.cn-shanghai.aliyuncs.com"); $client = new DefaultAcsClient($iClientProfile); $request = new Green\ImageSyncScanRequest(); $request->setMethod("POST"); $request->setAcceptFormat("JSON"); // 先上传本地文件再进行检测。 $uploader = ClientUploader::getImageClientUploader($client); $url = $uploader->uploadFile("d:/1.png"); $task1 = array('dataId' => uniqid(), 'url' => $url ); // 设置待检测的图片,一张图片对应一个检测任务。 // 多张图片同时检测时,处理时间由最后一张处理完的图片决定。 // 通常情况下批量检测的平均响应时间比单张检测要长。一次批量提交的图片数越多,响应时间被拉长的概率越高。 // 代码中以单张图片检测作为示例,如果需要批量检测多张图片,请自行构建多个检测任务。 // 一次请求中可以同时检测多张图片,每张图片可以同时检测多个风险场景,计费按照单图片单场景检测叠加计算。 // 例如,检测2张图片,场景传递porn和terrorism,则计费按照2张图片鉴黄和2张图片暴恐检测计算。 $request->setContent(json_encode(array("tasks" => array($task1), "scenes" => array("porn","terrorism")))); try { $response = $client->getAcsResponse($request); print_r($response); if(200 == $response->code){ $taskResults = $response->data; foreach ($taskResults as $taskResult) { if(200 == $taskResult->code){ $sceneResults = $taskResult->results; foreach ($sceneResults as $sceneResult) { $scene = $sceneResult->scene; $suggestion = $sceneResult->suggestion; // 根据scene和suggetion设置后续操作。 // 根据不同的suggestion结果做业务上的不同处理。例如,将违规数据删除等。 } }else{ print_r("task process fail:" + $response->code); } } }else{ print_r("detect not success. code:" + $response->code); } } catch (Exception $e) { print_r($e); }
- 传图片二进制内容进行检测
<?php require_once 'aliyuncs/aliyun-oss-php-sdk/autoload.php'; include_once 'aliyuncs/aliyun-php-sdk-core/Config.php'; use Green\Request\V20180509 as Green; use Green\Request\Extension\ClientUploader; // 请替换成您的AccessKey信息。 $iClientProfile = DefaultProfile::getProfile("cn-shanghai", "yourAccessKeyId", "yourAccessKeySecret"); DefaultProfile::addEndpoint("cn-shanghai", "cn-shanghai", "Green", "green.cn-shanghai.aliyuncs.com"); $client = new DefaultAcsClient($iClientProfile); $request = new Green\ImageSyncScanRequest(); $request->setMethod("POST"); $request->setAcceptFormat("JSON"); $uploader = ClientUploader::getImageClientUploader($client); // 读取本地文件,模拟二进制数据检测。 $bytes = file_get_contents("d:/您的图片.jpg"); $url = $uploader->uploadBytes($bytes); $task1 = array('dataId' => uniqid(), 'url' => $url ); // 设置待检测的图片,一张图片对应一个检测任务。 // 多张图片同时检测时,处理时间由最后一张处理完的图片决定。 // 通常情况下批量检测的平均响应时间比单张检测要长。一次批量提交的图片数越多,响应时间被拉长的概率越高。 // 代码中以单张图片检测作为示例,如果需要批量检测多张图片,请自行构建多个检测任务。 // 一次请求中可以同时检测多张图片,每张图片可以同时检测多个风险场景,计费按照单图片单场景检测叠加计算。 // 例如,检测2张图片,场景传递porn和terrorism,则计费按照2张图片鉴黄和2张图片暴恐检测计算。 $request->setContent(json_encode(array("tasks" => array($task1), "scenes" => array("porn")))); try { $response = $client->getAcsResponse($request); print_r($response); if(200 == $response->code){ $taskResults = $response->data; foreach ($taskResults as $taskResult) { if(200 == $taskResult->code){ $sceneResults = $taskResult->results; foreach ($sceneResults as $sceneResult) { $scene = $sceneResult->scene; $suggestion = $sceneResult->suggestion; // 根据scene和suggetion设置后续操作。 // 根据不同的suggestion结果做业务上的不同处理。例如,将违规数据删除等。 print_r($scene); print_r($suggestion); } }else{ print_r("task process fail:" + $response->code); } } }else{ print_r("detect not success. code:" + $response->code); } } catch (Exception $e) { print_r($e); }
提交图片异步检测任务
使用PHP SDK对图片进行风险检测,通过异步请求提交检测任务,结果可以通过提交请求时设置callback回调获取,也可以通过接口轮询获取。
异步检测支持的输入内容与同步检测一致(本地文件、图片URL、图片二进制流),以下仅以图片URL作为输入示例。
接口 | 描述 | 支持的地域 |
---|---|---|
ImageAsyncScanRequest | 提交图片异步检测任务,对图片进行多个风险场景的识别,包括色情、暴恐涉政、广告、二维码、不良场景、Logo(商标台标)识别。
说明 可配合ImageAsyncScanResultsRequest接口来轮询检测结果。
|
|
示例代码
<?php
include_once 'aliyuncs/aliyun-php-sdk-core/Config.php';
use Green\Request\V20180509 as Green;
// 请替换成您的AccessKey信息。
$iClientProfile = DefaultProfile::getProfile("cn-shanghai", "yourAccessKeyId", "yourAccessKeySecret");
DefaultProfile::addEndpoint("cn-shanghai", "cn-shanghai", "Green", "green.cn-shanghai.aliyuncs.com");
$client = new DefaultAcsClient($iClientProfile);
$request = new Green\ImageAsyncScanRequest();
$request->setMethod("POST");
$request->setAcceptFormat("JSON");
$task1 = array('dataId' => uniqid(),
'url' => 'http://xxx.jpg'
);
// 支持的场景包括:porn(色情)、terrorism(暴恐)、qrcode(二维码)、ad(图片广告)、 ocr(文字识别)。
$request->setContent(json_encode(array("tasks" => array($task1),
"scenes" => array("porn","terrorism"))));
try {
$response = $client->getAcsResponse($request);
print_r($response);
if(200 == $response->code){
$taskResults = $response->data;
foreach ($taskResults as $taskResult) {
if(200 == $taskResult->code){
$taskId = $taskResult->taskId;
// 保存taskId用于查询检测结果。
print_r($taskId);
}else{
print_r("task process fail:" + $response->code);
}
}
}else{
print_r("detect not success. code:" + $response->code);
}
} catch (Exception $e) {
print_r($e);
}
查询异步检测结果
接口 | 描述 | 支持的地域 |
---|---|---|
ImageAsyncScanResultsRequest | 查询图片异步检测任务的结果。支持同时查询多个检测任务的返回结果。 |
|
示例代码
<?php
include_once 'aliyuncs/aliyun-php-sdk-core/Config.php';
use Green\Request\V20180509 as Green;
// 请替换成您的AccessKey信息。
$iClientProfile = DefaultProfile::getProfile("cn-shanghai", "yourAccessKeyId", "yourAccessKeySecret");
DefaultProfile::addEndpoint("cn-shanghai", "cn-shanghai", "Green", "green.cn-shanghai.aliyuncs.com");
$client = new DefaultAcsClient($iClientProfile);
$request = new Green\ImageAsyncScanResultsRequest();
$request->setMethod("POST");
$request->setAcceptFormat("JSON");
$request->setContent(json_encode(array('img4QZbr4m3rGh4Fqp$vsHWsK-1q5mP@')));
try {
$response = $client->getAcsResponse($request);
print_r($response, JSON_FORCE_OBJECT);
if(200 == $response->code){
$taskResults = $response->data;
foreach ($taskResults as $taskResult) {
if(200 == $taskResult->code){
$sceneResults = $taskResult->results;
foreach ($sceneResults as $sceneResult) {
$scene = $sceneResult->scene;
$suggestion = $sceneResult->suggestion;
// 根据scene和suggetion设置后续操作。
// 根据不同的suggestion结果做业务上的不同处理。例如,将违规数据删除等。
}
}else{
print_r("task process fail:" + $response->code);
}
}
}else{
print_r("detect not success. code:" + $response->code);
}
} catch (Exception $e) {
print_r($e);
}
在文档使用中是否遇到以下问题
更多建议
匿名提交