| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- <?php
- /**
- * 重庆赤晓店信息科技有限公司
- * https://www.chixiaodian.com
- * Copyright (c) 2023 赤店商城 All rights reserved.
- */
- namespace app\utils;
- use app\models\Option;
- use TencentCloud\Common\Credential;
- use TencentCloud\Tiia\V20190529\Models\CreateGroupRequest;
- use TencentCloud\Tiia\V20190529\Models\CreateImageRequest;
- use TencentCloud\Tiia\V20190529\Models\DeleteImagesRequest;
- use TencentCloud\Tiia\V20190529\Models\DescribeGroupsRequest;
- use TencentCloud\Tiia\V20190529\Models\SearchImageRequest;
- use TencentCloud\Tiia\V20190529\TiiaClient;
- class TiiaHelper
- {
- private static $credential;
- private static $client;
- private static $groupType = 7;//商品图像搜索2.0升级版。为固定值
- public function __construct($config = [])
- {
- $store_id = $config['store_id'];
- $setting = json_decode(Option::get('tencent_image_setting', $store_id, 'saas')['value'], true);
- if (empty($setting['secretId']) || empty($setting['secretKey'])) {
- return ['code' => 1, 'msg' => '腾讯云账号参数不能为空'];
- }
- self::$credential = new Credential($setting['secretId'], $setting['secretKey']);
- self::$client = new TiiaClient(self::$credential, $setting['region']);
- }
- /**
- * 创建图像库
- * @param $GroupId
- * @param $GroupName
- * @param $MaxCapacity
- * @return array
- * User: hankaige
- * DATE TIME: 2023/1/12 14:13
- */
- public static function createGroup($GroupId, $GroupName, $MaxCapacity)
- {
- try {
- $request = new CreateGroupRequest();
- // 请求需要的参数
- $request->deserialize([
- 'GroupId' => $GroupId,
- 'GroupType' => self::$groupType,
- 'GroupName' => $GroupName,
- 'MaxCapacity' => $MaxCapacity
- ]);
- $req = self::$client->CreateGroup($request);
- return [
- 'code' => 0,
- 'data' => json_decode($req->toJsonString(), true),
- ];
- } catch (\Exception $e) {
- return [
- 'code' => 1,
- 'msg' => $e->getMessage(),
- ];
- }
- }
- /**
- * 获取已创建的图像库
- * @param $GroupId
- * @return array
- * User: hankaige
- * DATE TIME: 2023/1/12 14:13
- */
- public static function describeGroup($GroupId)
- {
- try {
- $request = new DescribeGroupsRequest();
- // 请求需要的参数
- $request->deserialize([
- 'GroupId' => $GroupId
- ]);
- $req = self::$client->DescribeGroups($request);
- return [
- 'code' => 0,
- 'data' => json_decode($req->toJsonString(), true),
- ];
- } catch (\Exception $e) {
- return [
- 'code' => 1,
- 'msg' => $e->getMessage(),
- ];
- }
- }
- /**
- * 上传图片
- * @param $GroupId 图库ID
- * @param $EntityId 物品ID,最多支持64个字符。一个物品ID可以包含多张图片,若EntityId已存在,则对其追加图片。同一个EntityId,最大支持10张图。
- * @param $PicName 图片名称,最多支持64个字符,PicName唯一确定一张图片,具有唯一性
- * @param $ImageUrl
- * @return array
- * User: hankaige
- * DATE TIME: 2023/1/12 14:16
- */
- public static function createImage($GroupId, $EntityId, $PicName, $ImageUrl)
- {
- try {
- $request = new CreateImageRequest();
- // 请求需要的参数
- $request->deserialize([
- 'GroupId' => $GroupId,
- 'EntityId' => $EntityId,
- 'PicName' => $PicName,
- 'ImageUrl' => $ImageUrl,
- 'EnableDetect' => true
- ]);
- $req = self::$client->CreateImage($request);
- \Yii::error(json_encode($req));
- return [
- 'code' => 0,
- 'data' => json_decode($req->toJsonString(), true),
- ];
- } catch (\Exception $e) {
- return [
- 'code' => 1,
- 'msg' => $e->getMessage(),
- ];
- }
- }
- /**
- * 删除图库图片
- * @param $GroupId
- * @param $EntityId
- * @param $PicName
- * @return array
- * User: hankaige
- * DATE TIME: 2023/1/12 14:20
- */
- public static function deleteImages($GroupId,$EntityId,$PicName = ''){
- try {
- $request = new DeleteImagesRequest();
- // 请求需要的参数
- $request->deserialize([
- 'GroupId' => $GroupId,
- 'EntityId' => (string)$EntityId,
- 'PicName' => $PicName,
- ]);
- $req = self::$client->DeleteImages($request);
- return [
- 'code' => 0,
- 'data' => json_decode($req->toJsonString(), true),
- ];
- } catch (\Exception $e) {
- return [
- 'code' => 1,
- 'msg' => $e->getMessage(),
- ];
- }
- }
- /**
- * 搜索相似图片
- * @param $GroupId 图库ID
- * @param $ImageUrl 要搜索的图片链接
- * @param $Limit 返回数量 默认20
- * @param $MatchThreshold 相似度阙值 默认50 只返回相似度50以上的图片
- * @return array
- * User: hankaige
- * DATE TIME: 2023/1/12 14:23
- */
- public static function searchImage($GroupId,$Image,$Limit = 20,$MatchThreshold = 50){
- try {
- $request = new SearchImageRequest();
- // 请求需要的参数
- $request->deserialize([
- 'GroupId' => $GroupId,
- 'ImageBase64' => $Image,
- 'Limit' => $Limit,
- 'MatchThreshold' =>$MatchThreshold
- ]);
- $req = self::$client->SearchImage($request);
- return [
- 'code' => 0,
- 'data' => json_decode($req->toJsonString(), true),
- ];
- } catch (\Exception $e) {
- return [
- 'code' => 1,
- 'msg' => $e->getMessage(),
- ];
- }
- }
- }
|