Chevereto增加百度AI审核功能,并开启图片鉴黄

众所周知,运营一个图床让人头疼的不仅仅是带宽配置,更让人忧心的是用户会不间断的上传违规图片,今天技术宅给大家带来的是Chevereto增加百度AI审核功能,并开启图片鉴黄,并且后台可以设置百度AI的相关参数,例如AppID,API Key,Secret Key!

添加应用

我们需要现在https://console.bce.baidu.com/ai/#/ai/antiporn/app/list添加应用,只需要添加应用名称,修改应用类型和描述即可,其他默认!

创建完成后会获得例如AppID,API Key,Secret Key!我们后面会用到!

添加文件

我们需要前往https://ai.baidu.com/sdk#anti下载PHP版本的SDK文件,需要用到 4 个文件,class.aipbase.php class.aiphttpclient.php class.aiphttpUril.php class.imagecensor.php , 这四个文件是百度官方提供的 SDK ,技术宅这里修改了一下。嫌麻烦的可以下载技术宅打包好的文件即可!注意需要将默认的SDK文件中的头部都修改为:namespace CHV;

将四个文件上传至 Chevereto 程序下的 app/lib/classes 文件夹下。

修改文件

修改路径为:app/lib/classes中的class.upload.php,搜索public static function getDefaultOptions()然后在此函数结束的下面添加以下内容:

/** 图像审核
* @throws UploadException
*/
protected function isValidCensor()
{
$censor_status = Settings::get("is_censor");
if($censor_status == 1){
$censor = new Imagecensor();
if ($this->type == 'file') {
$rep = $censor->imageCensorUserDefined(file_get_contents($this->source['tmp_name']));
} else if ($this->type == 'url') {
$rep = $censor->imageCensorUserDefined($this->source);
}
if (array_key_exists('error_code', $rep)) throw new UploadException("图片审核失败", 201);
$conclusionType = $rep['conclusionType'];//1:合规,2:不合规,3:疑似,4:审核失败
if ($conclusionType == 4) {
throw new UploadException("图片审核失败", 201);
} else if ($conclusionType > 1) {
throw new UploadException("图片违规", 201);
}
}
}

 

其中的函数isValidCensor 这个方法就是审核图像的,只有通过验证才会上传文件,没有通过的话会直接异常(包括图片审核失败,不合规,疑似)!

然后在 class.upload.phpexec 方法里面添加 一行$this->isValidCensor(); // Exception 2 图片审核

最后我们需要修改app/themes/Peafowl/views/dashboard.php,搜索代码中的Cookie law compliance在上一行添加以下代码:

<!-- 增加图片审核-->
<div class="input-label">
<label for="enable_cookie_law"><?php _se('是否开启图片审核'); ?></label>
<div class="c5 phablet-c1"><select type="text" name="is_censor" id="is_censor" class="text-input">
<?php
echo CHV\Render\get_select_options_html([1 => _s('Enabled'), 0 => _s('Disabled')], CHV\Settings::get('is_censor')); ?>
</select></div>
<div class="input-below"><?php _se('是否开启图片审核'); ?></div>
</div>
<div class="input-label">
<label for="sdk_pup_url">百度AI APP_ID</label>
<div class="c9 phablet-c1"><input type="text" name="baidu_app_id" id="baidu_app_id" class="text-input" value="<?php echo CHV\Settings::get('baidu_app_id', true); ?>" placeholder="<?php _se('Empty'); ?>"></div>
<div class="input-below input-warning red-warning"><?php echo get_input_errors()['baidu_app_id']; ?></div>
<div class="input-below"><?php _se('百度AI 平台的 app_id,获取地址: https://console.bce.baidu.com/ai/'); ?></div>
</div>
<div class="input-label">
<label for="sdk_pup_url">百度AI APP_KEY</label>
<div class="c9 phablet-c1"><input type="text" name="baidu_app_key" id="baidu_app_key" class="text-input" value="<?php echo CHV\Settings::get('baidu_app_key', true); ?>" placeholder="<?php _se('Empty'); ?>"></div>
<div class="input-below input-warning red-warning"><?php echo get_input_errors()['baidu_app_key']; ?></div>
<div class="input-below"><?php _se('百度AI 平台的 app_key,获取地址: https://console.bce.baidu.com/ai/'); ?></div>
</div>
<div class="input-label">
<label for="sdk_pup_url">百度AI APP_SECRET</label>
<div class="c9 phablet-c1"><input type="text" name="baidu_app_secret" id="baidu_app_secret" class="text-input" value="<?php echo CHV\Settings::get('baidu_app_secret', true); ?>" placeholder="<?php _se('Empty'); ?>"></div>
<div class="input-below input-warning red-warning"><?php echo get_input_errors()['baidu_app_secret']; ?></div>
<div class="input-below"><?php _se('百度AI 平台的 app_secret,获取地址: https://console.bce.baidu.com/ai/'); ?></div>
</div>

插入数据库

完成以上操作后,我们需要插入数据库注意其中的表名chevereto和数据库前缀chv_需要修改成和自己一致的!:

INSERT INTO `chevereto`.`chv_settings`( `setting_name`, `setting_value`, `setting_default`, `setting_typeset`) VALUES ('is_censor', '1','1', 'bool');
INSERT INTO `chevereto`.`chv_settings`( `setting_name`, `setting_value`, `setting_default`, `setting_typeset`) VALUES ( 'baidu_app_id', '', '', 'string');
INSERT INTO `chevereto`.`chv_settings`( `setting_name`, `setting_value`, `setting_default`, `setting_typeset`) VALUES ( 'baidu_app_key', '', '', 'string');
INSERT INTO `chevereto`.`chv_settings`(`setting_name`, `setting_value`, `setting_default`, `setting_typeset`) VALUES ('baidu_app_secret', '', '', 'string');

效果展示

在后台设置完成参数后,我们再继续上传图片,技术宅这里用一张疑似违规图演示:

成功拦截了上传,至于是否准确,技术宅这里要进行多次测试。不过用的百度AI鉴别,相信还是值得信赖的!

文件打包

打包的是百度SDK需要的文件,不需要修改直接上传到 app/lib/classes目录下即可!

下载权限

查看
  • ¥{{right.value}}
    {{right.value}}
    免费下载
    评论后下载
    登录后下载

  • {{attr.name}}:
您当前的等级为
您有每天免费下载所有资源次的特权,今日剩余 已取得下载权限
技术分享

谷歌AdSense如何自定义自适应匹配内容单元

2020-5-4 19:49:17

技术分享

Nginx上传文件提示413 Request Entity Too Large解决办法

2020-5-7 19:55:09

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索

关于我们

技术宅,专注分享,专注技术!分享互联网科技新闻轶事,分享生活小常识,各种数码使用小技巧!互联网的精神本就是分享,我们坚信分享会带来更多的进步!

Copyright © 2020 技术宅 苏ICP备17056378号 苏公网安备32010202010371号 - 查询 32 次,耗时 0.1739 秒 南京市玄武区酷芯壳网络科技中心 提供技术支持 安全联盟认证