接入阿里云的图片审核功能

官方文档:https://help.aliyun.com/document_detail/467828.html?spm=a2c4g.11186623.help-menu-28415.d_3_1.7ab029b1JZTUV7&scm=20140722.H_467828._.OR_help-T_cn~zh-V_1

示例代码

安装SDK

composer require alibabacloud/green-20220302 2.20.0
<?php
/**
 * 阿里内容检查
 * https://help.aliyun.com/document_detail/467828.html?spm=a2c4g.11186623.help-menu-28415.d_3_1.13cc17f49tiCfb&scm=20140722.H_467828._.OR_help-T_cn~zh-V_1#669625e027ruf
 *
 * composer require alibabacloud/green-20220302 2.20.0
 */

namespace Ai;

use AlibabaCloud\SDK\Green\V20220302\Models\ImageModerationResponse;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use AlibabaCloud\SDK\Green\V20220302\Green;
use AlibabaCloud\SDK\Green\V20220302\Models\ImageModerationRequest;
use AlibabaCloud\Tea\Utils\Utils;
use Exception;


class AliCheck
{
    static $accessKeyId = "";
    static $accessKeySecret = "";
    static $endpoint = 'green-cip.ap-southeast-1.aliyuncs.com'; // 新加坡
//    static $endpoint = 'green-cip.cn-shenzhen.aliyuncs.com'; // 深圳

    /**
     * 创建请求客户端
     * @param $accessKeyId
     * @param $accessKeySecret
     * @param $endpoint
     * @return Green
     */
    static function create_client($accessKeyId, $accessKeySecret, $endpoint): Green
    {
        $config = new Config([
            "accessKeyId" => $accessKeyId,
            "accessKeySecret" => $accessKeySecret,
            // 设置HTTP代理。
            // "httpProxy" => "http://10.10.xx.xx:xxxx",
            // 设置HTTPS代理。
            // "httpsProxy" => "https://10.10.xx.xx:xxxx",
            "endpoint" => $endpoint,
        ]);
        return new Green($config);
    }

    /**
     * 提交检测任务
     * @param $accessKeyId
     * @param $accessKeySecret
     * @param $endpoint
     * @return ImageModerationResponse
     */
    static function invoke($accessKeyId, $accessKeySecret, $endpoint, $imgUrl): ImageModerationResponse
    {
        // 注意:此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。
        $client = self::create_client($accessKeyId, $accessKeySecret, $endpoint);
        // 创建RuntimeObject实例并设置运行参数。
        $runtime = new RuntimeOptions([]);

        // 检测参数构造。
        $request = new ImageModerationRequest();
        $serviceParameters = array(
            // 待检测图片,公网可访问的URL。
            'imageUrl' => $imgUrl,
            // 检测数据唯一标识。
            'dataId' => uniqid());
        // 图片检测service:内容安全控制台图片增强版规则配置的serviceCode,示例:baselineCheck
        // 支持service请参考:https://help.aliyun.com/document_detail/467826.html?0#p-23b-o19-gff
        $request->service = "baselineCheck_cb"; // 出海版
//        $request->service = "baselineCheck"; // 国内
        $request->serviceParameters = json_encode($serviceParameters);
        // 提交检测
        return $client->imageModerationWithOptions($request, $runtime);
    }

    /**
     * 检测图片
     * @param $imgUrl
     * @param $type 0- 返回检查数据 1-直接检查
     * @return array
     */
    static function checkImg($imgUrl = '', $type = 0)
    {
        try {
            $response = self::invoke(self::$accessKeyId, self::$accessKeySecret, self::$endpoint, $imgUrl);
            // 自动路由。
            if (Utils::equalNumber(500, $response->statusCode) || Utils::equalNumber(500, $response->body->code)) {
                //区域切换到cn-beijing。
                $endpoint = "green-cip.cn-beijing.aliyuncs.com";
                $response = self::invoke(self::$accessKeyId, self::$accessKeySecret, $endpoint, $imgUrl);
            }
            $data = json_encode($response->body, JSON_UNESCAPED_UNICODE);
            $data = json_decode($data, true);
            $data = $data['data'] ?? []; // riskLevel = high
            $riskLevel = $data['riskLevel'] ?? 'none';
            if ($type == 1 && $riskLevel == 'high') {
                return [0, 'risk_level_high', []];
            }
            return [1, 'success', $data];
        } catch (Exception $e) {
            return [0, $e->getMessage(), []];
        }

    }

}

问题

按文档里的安装SDK,使用demo示例碰到问题:
确实引入库文件如图:

use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use AlibabaCloud\Tea\Utils\Utils;

在这里插入图片描述

解决办法引入缺少的SDK库

composer require alibabacloud/tea-utils
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值