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));