zoukankan      html  css  js  c++  java
  • 基于CentOS体验万象优图鉴黄服务

    系统要求:CentOS 7.2 64 位操作系统

    初始化配置

    使用万象优图图片鉴黄 API 接口,我们需要先完成以下步骤:

    • 获取腾讯云账号 APP ID
    • 配置云 API 公钥/密钥
    • 配置优图 bucket

    首先在终端执行以下命令,创建目录 /data/try-pi,然后进入到该目录:

    mkdir -p /data/try-pi && cd $_

    然后在目录 /data/try-pi 下创建 init.sh 文件,在文件中贴入以下脚本:

    示例代码:/data/try-pi/init.sh
     1 #!/bin/bash
     2 
     3 #########################################
     4 # 基础配置
     5 #########################################
     6 
     7 # 腾讯云账号 APP ID
     8 # 在如下单引号内填入你的 APPID
     9 export APP_ID=''
    10 
    11 # 云 API 公钥
    12 # 在如单引号内填入你的 SecretID
    13 export SECRET_ID=''
    14 
    15 # 云 API 密钥
    16 # 在如下单引号内填入你的 SecretKey
    17 export SECRET_KEY=''
    18 
    19 # 优图 bucket 名称
    20 # 如果你创建的 bucket 名称不叫 trial,替换为自己创建的即可
    21 export BUCKET_NAME='trial'

    可以看到配置文件中要求我们填入以下信息:

    • 腾讯云账号 APP ID
    • 云 API 公钥/密钥
    • 优图 bucket 名称

    其中,腾讯云账号 APP ID 及 云 API 公钥/密钥 可以点击这里前往腾讯云控制台 云 API 密钥 - 个人 API 密钥 页面查看。

    如果你还没有创建过密钥,可以在该页面点击 +新建密钥 按钮创建一个,然后将对应信息填入到 init.sh 文件中,按键 [Ctrl + S] 进行保存。

    点击这里前往腾讯云控制台 万象优图 - Bucket管理 页面创建一个名称为 trial,其他选项默认即可。

    将配置项导出为环境变量

    在终端中执行以下命令,将各配置项导出为 Shell 环境变量:

    source init.sh

    可以通过以下命令来验证各配置项是否已正常导出:

    echo $APP_ID
    echo $SECRET_ID
    echo $SECRET_KEY
    echo $BUCKET_NAME

    生成鉴权签名

    新建脚本生成签名

    基础配置完成后,我们在此基础上还需生成[鉴权签名],因为调用万象优图 API 接口需要用到它。我们将创建脚本来生成有效期为 30 天的多次有效的签名。

    在目录 /data/try-pi 下创建 gen-sign.sh 文件,然后在文件中贴入以下脚本:

    示例代码:/data/try-pi/gen-sign.sh
     1 #!/bin/bash
     2 
     3 #########################################
     4 # 生成多次有效的鉴权签名(有效期 30 天) 
     5 # @see https://cloud.tencent.com/document/product/460/6968
     6 #########################################
     7 
     8 # 当前时间戳(秒)
     9 current_time=$(date +%s)
    10 
    11 # 到期时间戳(秒)
    12 expire_time=$(($current_time + 30 * 24 * 60 * 60))
    13 
    14 # 随机串,无符号 10 进制整数(不大于 10 位)
    15 rand='4815162342'
    16 
    17 # 历史遗留字段,写死为 0
    18 user_id='0'
    19 
    20 # 拼接签名串
    21 str="a=$APP_ID&b=$BUCKET_NAME&k=$SECRET_ID&e=$expire_time&t=$current_time&r=$rand&u=$user_id";
    22 
    23 # 使用 HMAC-SHA1 算法对签名串加密
    24 sign=$(echo -n $str | openssl dgst -sha1 -hmac $SECRET_KEY -binary)
    25 
    26 # 对加密串进行 Base64 编码
    27 sign=$(echo -n $sign$str | base64)
    28 
    29 # 移除多余的空格得到最终的鉴权签名
    30 sign=$(echo -n $sign | tr -d ' ')
    31 
    32 # 导出鉴权签名
    33 export AUTH_SIGN=$sign

    关于签名鉴权的详细介绍和生成方法可移步[https://cloud.tencent.com/document/product/460/6968]

    将签名导出为环境变量

    在终端中,生成签名并将签名导出为环境变量:

    source gen-sign.sh

    可以通过以下命令来验证签名是否已正常导出(该命令可多次执行,每次执行都会生成新的签名并将签名导出为环境变量,签名应该是一串经过 Base64 的字符串):

    echo $AUTH_SIGN

    体验智能鉴黄

    准备鉴黄脚本

    仍旧在目录 /data/try-pi 下创建 detect-porn.sh 文件,然后在文件中贴入以下脚本:

    示例代码:/data/try-pi/detect-porn.sh
     1 #!/bin/bash
     2 
     3 #########################################
     4 # 鉴黄脚本
     5 # @see https://cloud.tencent.com/document/product/460/6900
     6 #########################################
     7 
     8 # 图片鉴黄 API 地址
     9 END_POINT='https://service.image.myqcloud.com/detection/porn_detect'
    10 
    11 # 使用帮助
    12 function usage() {
    13   echo ""
    14   echo "-h --help"
    15   echo "-r --remote-image=网络图片地址"
    16   echo "-l --local-image=本地图片地址"
    17   echo ""
    18 }
    19 
    20 # 对网络图片进行鉴黄
    21 function detect_remote() {
    22   remote_image=$1
    23 
    24   curl -X POST 
    25        -H "Content-Type: application/json" 
    26        -H "Authorization: $AUTH_SIGN" 
    27        -d '{"appid":'$APP_ID',"bucket":"'$BUCKET_NAME'","url_list":["'$remote_image'"]}' 
    28        --silent 
    29        $END_POINT
    30 }
    31 
    32 # 对本地图片进行鉴黄
    33 function detect_local() {
    34   local_image=$1

    在终端中敲入以下命令查看鉴黄脚本使用说明(鉴黄脚本是对万象优图图片鉴黄 API 接口的实践。可以看到,我们的脚本支持对 网络图片 和 本地图片 进行鉴黄):

    bash detect-porn.sh -h

    对网络图片进行鉴黄

    在终端执行以下命令,可以看到对网络图片的鉴黄结果(输出结果应该是一段 JSON 字符串,点击这里可以查看输出结果各字段的含义):

    bash detect-porn.sh --remote-image='https://imgcache.qq.com/open_proj/proj_qcloud_v2/gateway/event/pc/ci-identify/css/img/demo/demo_8.jpg'

    对本地图片进行鉴黄

    在终端执行执行以下命令,将网络图片下载到云主机 /data/try-pi 目录下:

    wget https://imgcache.qq.com/open_proj/proj_qcloud_v2/gateway/event/pc/ci-identify/css/img/demo/demo_10.jpg -O /data/try-pi/demo.jpg

    下载完成后,右键刷新 /data/try-pi 目录,可以看到在该目录下新增了一个名为 demo.jpg 的图片,点击可预览该图片。

    接下来,在终端执行以下命令,可以看到对该图片的鉴黄结果:

    bash detect-porn.sh --local-image='/data/try-pi/demo.jpg'

    输出结果应该是一段 JSON 字符串,点击这里可以查看输出结果各字段的含义。

    当然,你也可以根据上述步骤,替换为自己准备的图片进行鉴黄体验。

    完成实验

    Well done!通过本实验,我们了解了如何使用图片鉴黄 API 接口(包括生成 API 密钥、创建优图 bucket、生成鉴权签名),以及如何使用接口对网络图片和本地图片进行鉴黄。

  • 相关阅读:
    datanode报错Problem connecting to server
    使用命令查看hdfs的状态
    Access denied for user root. Superuser privilege is requ
    ElasticSearch默认的分页参数 size
    SparkStreaming Kafka 维护offset
    【容错篇】Spark Streaming的还原药水——Checkpoint
    251 Android 线性与相对布局简介
    250 Android Studio使用指南 总结
    249 如何解决项目导入产生的中文乱码问题
    248 gradle更新问题
  • 原文地址:https://www.cnblogs.com/jikexianfeng/p/8485085.html
Copyright © 2011-2022 走看看