php使用腾讯云人像处理

php腾讯云图片处理

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2021/2/25 0025
 * Time: 17:09
 */
/*header('Access-Control-Allow-Origin:*'); // *代表允许任何网址请求
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, x-file-name");
header('Access-Control-Allow-Methods: GET, POST, PUT,DELETE');*/

class Img
{
  static private $instance;
  private $redis;
  private $secretId = "";//自己的appid
  private $secretKey = "";//自己的key
  private $host = "bda.tencentcloudapi.com";
  private $service = "bda";
  private $version = "2020-03-24";
  private $action = "SegmentPortraitPic";
  private $region = "ap-guangzhou";
  private $timestamp = 0;

  private $algorithm = "TC3-HMAC-SHA256";

  static public function getInstance(){
    if(!self::$instance instanceof self){
      self::$instance = new self();
    }
    return self::$instance;
  }

  private function __clone(){

  }
  //图片处理
  function pending($str){
    $this->timestamp=time();
    $params = array();
    //die;
    $params['Url']=$str;
    $data = json_encode($params);

    //die;
    $authorization = $this->getauthorization($str,$data);
    $header = array(
      "Authorization:".$authorization,
      "Content-Type:".'application/json;charset=utf-8',
      "Host:".$this->host,
      "X-TC-Action:".$this->action,
      "X-TC-Timestamp:".$this->timestamp,
      "X-TC-Version:".$this->version,
      "X-TC-Region:".$this->region
    );
    $url = "https://bda.tencentcloudapi.com";
    $result = json_decode($this->juheHttpRequest($url,$data,1,$header),true);

     $msg = array();
    if(!empty($result['Response']['Error'])){
      $msg=[
        'code'=>400,
        'msg'=>$result['Response']['Error']['Message']
      ];
      return json_encode($msg);die;
      //echo '失败';die;
    }
     $msg=[
       'code'=>200,
       'data'=>$result['Response']['ResultImage'],
       'msg'=>'成功'
     ];
   
    return json_encode($msg);die;
  }
  //set1
  private function getauthorization($str,$data){
    // step 1: build canonical request string
    $httpRequestMethod = "POST";
    $canonicalUri = "/";
    $canonicalQueryString = "";
    $canonicalHeaders = "content-type:application/json;charset=utf-8\n"."host:".$this->host."\n";
    $signedHeaders = "content-type;host";
    $payload = $data;
    $hashedRequestPayload = hash("SHA256", $payload);
    $canonicalRequest = $httpRequestMethod."\n"
    .$canonicalUri."\n"
    .$canonicalQueryString."\n"
    .$canonicalHeaders."\n"
    .$signedHeaders."\n"
    .$hashedRequestPayload;

  // step 2: build string to sign
    $date = gmdate("Y-m-d", $this->timestamp);
    $credentialScope = $date."/".$this->service."/tc3_request";
    $hashedCanonicalRequest = hash("SHA256", $canonicalRequest);
    $stringToSign = $this->algorithm."\n"
      .$this->timestamp."\n"
      .$credentialScope."\n"
      .$hashedCanonicalRequest;

    // step 3: sign string
    $secretDate = hash_hmac("SHA256", $date, "TC3".$this->secretKey, true);
    $secretService = hash_hmac("SHA256", $this->service, $secretDate, true);
    $secretSigning = hash_hmac("SHA256", "tc3_request", $secretService, true);
    $signature = hash_hmac("SHA256", $stringToSign, $secretSigning);

    // step 4: build authorization
    $authorization = $this->algorithm
      ." Credential=".$this->secretId."/".$credentialScope
      .",SignedHeaders=content-type;host,Signature=".$signature;

    return $authorization;
  }
  //curl请求
  private function juheHttpRequest($url, $params = false, $ispost = 0,$header=false)
  {
    $httpInfo = array();
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36');
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    if($header){
      curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    }
    curl_setopt($ch, CURLOPT_TIMEOUT, 12);

    if ($ispost) {
      curl_setopt($ch, CURLOPT_POST, true);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
      curl_setopt($ch, CURLOPT_URL, $url);
    } else {
      if ($params) {
        curl_setopt($ch, CURLOPT_URL, $url . '?' . $params);
      } else {
        curl_setopt($ch, CURLOPT_URL, $url);
      }
    }

    $response = curl_exec($ch);
    if ($response === FALSE) {
      echo "cURL Error: ".curl_error($ch);
      return false;
    }

    curl_setopt($ch, CURLOPT_ENCODING, '');
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $httpInfo = array_merge($httpInfo, curl_getinfo($ch));
    curl_close($ch);
    return $response;
  }

}
$class = Img::getInstance();
$str ="图片路径";
//$str = $_GET['url'];
echo ($class->pending($str));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值