栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

UCloud 云服务内容鉴黄 Java 版本实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

UCloud 云服务内容鉴黄 Java 版本实现

前言

最近不少小伙伴反映上传小黄图偶尔性的异常,并且不能上传动态图片,很是苦恼!无她,鉴黄API还没有这么智能,毕竟是自己训练的,不是那么专业!为了更好的服务广大网友,撸主决定接入更加智能快速的鉴黄服务。

UCloud

UCloud内容审核产品,基于海量训练数据,结合深度学习识别技术,基于UCloud底层云服务,提供99.9%的服务稳定性保障。能够精准识别图片、视频中的低俗内容,适用于各类用户的鉴黄审核需求,帮助您在业务层面降低违规风险,同时应用算法服务,也大大减轻了人工审核的投入成本。

最主要的是,鉴黄识别服务在2020年6月30日前,均免费试用。即使到期以后,小伙伴们也不用太担心,鉴黄识别服务定价采取阶梯定价方式,每日2000张免费调用额度,剩余部分不累积。日2000张,尔等也只有仰望的份了。

申请

地址:www.ucloud.cn/site/product/uaicensor.html

  • 创建UAI Censor AI内容审核应用
  • 获取账户公私钥,鉴黄必备

总之很简单,都是中文文档,三五分钟就可以搞定的事情。

代码案例

比较扯淡的是官方只提供了Python和 PHP版本的生成签名代码,难道我大Java不是宇宙第一语言?于是趁着夜深人静只能自己撸一把了!

application.properties 引入以下配置

# ===================================
# UCloud鉴黄
# ===================================
ucloud.yellow.flag = true
ucloud.publicKey = **********
ucloud.privateKey = **********
ucloud.resourceId= **********
ucloud.url= http://api.uai.ucloud.cn/v1/image/scan

鉴黄工具类:

public String check(String imageUrl) {
 try {
			//图片绝对路径
     imageUrl = toolsUrl + imageUrl;
     RestTemplate rest = new RestTemplate();
     HttpHeaders headers = new HttpHeaders();
     
     String timestamp = System.currentTimeMillis()+"";
     SortedMap packageParams = new TreeMap<>();
     packageParams.put("PublicKey", publicKey);
     packageParams.put("ResourceId", resourceId);
     packageParams.put("Timestamp", timestamp);
     packageParams.put("Url", imageUrl);
     String signature = UCloudUtil.createSign(packageParams,privateKey );
     
     MultiValueMap param = new linkedMultiValueMap<>();
     param.add("Scenes", "porn");
     param.add("Method", "url");
     param.add("Url", imageUrl);
     
     headers.setContentType(MediaType.parseMediaType("multipart/form-data; charset=UTF-8"));
     headers.set("PublicKey", publicKey);
     headers.set("Signature",signature);
     headers.set("ResourceId",resourceId);
     headers.set("Timestamp", timestamp);
     HttpEntity> httpEntity = new HttpEntity<>(param, headers);
     ResponseEntity responseEntity = rest.exchange(ucloudUrl, HttpMethod.POST, httpEntity, String.class);
     return responseEntity.getBody();
 } catch (Exception e) {
     e.printStackTrace();
     return "";
 }
}

生成Signature签名算法流程包括四步:

  • 将请求参数按照名进行升序排列;
  • 构造被签名参数串;
  • 计算签名;
  • 使用签名组合HTTP请求。

代码案例:

public class UCloudUtil {
    
    public static String createSign(SortedMap packageParams,
 String privateKey) throws Exception {
 StringBuffer sb = new StringBuffer();
 Set es = packageParams.entrySet();
 Iterator it = es.iterator();
 while (it.hasNext()) {
     Map.Entry entry = (Map.Entry) it.next();
     String k = (String) entry.getKey();
     String v =  (String)entry.getValue();
     sb.append(k + v);
 }
 sb.append(privateKey);
 String sign = shaEncode(sb.toString());
 return sign;
    }
    public static String shaEncode(String inStr) throws Exception {
 MessageDigest sha = null;
 try {
     sha = MessageDigest.getInstance("SHA");
 } catch (Exception e) {
     System.out.println(e.toString());
     e.printStackTrace();
     return "";
 }

 byte[] byteArray = inStr.getBytes("UTF-8");
 byte[] md5Bytes = sha.digest(byteArray);
 StringBuffer hexValue = new StringBuffer();
 for (int i = 0; i < md5Bytes.length; i++) {
     int val = ((int) md5Bytes[i]) & 0xff;
     if (val < 16) {
  hexValue.append("0");
     }
     hexValue.append(Integer.toHexString(val));
 }
 return hexValue.toString();
    }
}

返回结果:

{
	"RetCode": 0,
	"Message": "",
	"Timestamp": 1574821854,
	"Status": "Success",
	"StartTime": 1574821852685,
	"EndTime": 1574821854,
	"Result": {
		"Porn": {
			"Suggestion": "pass",
			"Score": 0.00187
		},
		"Politician": {
			"Suggestion": "",
			"Score": 0
		},
		"Terror": {
			"Suggestion": "",
			"Score": 0
		}
	}
}

撸主只需要关心RetCode和Porn这两个参数就可以了,RetCode 为0说明API调用正常,Porn中的参数Suggestion为pass说明通过。

小结

只有壳的小黄图是没有灵魂的,希望各位网友,发扬艰苦奋斗的精神,把有限的灵魂注入到无限的小黄图中!这样,撸主才有动力升级更多有趣的功能。

此次升级优化了手机端显示的问题,使其更加耐看。接入新的鉴黄服务,和自建鉴黄一起使用双重保驾护航,同时小伙伴们可以自由的上传喜欢的动图了。

参考

https://www.cloudbed.vip

https://docs.ucloud.cn/ai/uai-censor/access/key

https://docs.ucloud.cn/ai/uai-censor/api/censor/image

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/238684.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号