全部產品
Search
文件中心

Intelligent Media Management:PHP SDK

更新時間:Nov 20, 2024

阿里雲API調試工具OpenAPI Explore提供OpenAPI文檔、API調試和SDK樣本,協助您快速入門API開發。本文介紹如何安裝和快速使用Intelligent Media ManagementPHP SDK。

前提條件

安裝SDK

重要

調用2020-09-30版本的API,需要使用2020-09-30版本的SDK。

使用Intelligent Media ManagementPHP SDK的操作步驟請參見快速入門

安裝composer

  1. 下載安裝指令碼 composer-setup.php到目前的目錄。

    php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"

  2. 執行安裝過程。

    php composer-setup.php

  3. 刪除安裝指令碼。

    php -r "unlink('composer-setup.php');"

  4. 執行sudo mv composer.phar /usr/local/bin/composer全域安裝,完成後會有composer.phar檔案,運行php composer.phar就可以查看composer。

    image.png

安裝IMM依賴

執行命令composer require alibabacloud/imm-20200930 4.4.0

訪問憑證

您可以選擇以下類型的訪問憑證。

  • 臨時訪問憑證:對於需要高安全性的情境,例如臨時授權應用訪問IMM,建議使用臨時訪問憑證。臨時訪問憑證可以限制訪問的有效期間,從而減少訪問憑證泄露的風險。此外,臨時訪問憑證支援許可權控制,可以有效地避免許可權過大的問題。

  • 長期訪問憑證:出於安全性考慮,不建議您使用長期訪問憑證,建議您使用臨時訪問憑證。對於需要便利性的情境,長期訪問憑證可以在較長時間內免除多次重新整理的麻煩。建議每三個月更換一次長期訪問憑證,以提高帳號的安全性。當長期訪問憑證泄露或者不再使用時,應該及時刪除或者禁用相關的訪問憑證,以免造成安全風險。

使用臨時訪問憑證

當您準備臨時使用PHP SDK訪問IMM服務時,可以參考配置臨時訪問憑證

如下以在華東1(杭州)地區中檢測圖片中的人臉及人臉資訊為例,介紹如何使用臨時訪問憑證通過Intelligent Media ManagementPHP SDK調用對應API。

說明

使用臨時訪問憑證擷取STS TOKEN需要額外安裝依賴:

composer require alibabacloud/sts-20150401 1.1.4

  1. 建立demo.php檔案並寫入如下內容。

    <?php
    
    // This file is auto-generated, don't edit it. Thanks.
    namespace AlibabaCloud\SDK\Sample;
    
    use AlibabaCloud\SDK\Sts\V20150401\Sts;
    use AlibabaCloud\Tea\Utils\Utils;
    use \Exception;
    use AlibabaCloud\Tea\Exception\TeaError;
    
    use Darabonba\OpenApi\Models\Config;
    use AlibabaCloud\SDK\Sts\V20150401\Models\AssumeRoleRequest;
    use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
    
    use AlibabaCloud\SDK\Imm\V20200930\Imm;
    use AlibabaCloud\SDK\Imm\V20200930\Models\DetectImageFacesRequest;
    
    
    class Sample {
           /**
         * 使用AK&SK初始化帳號Client
         * @return imm Client
         */
        public static function createClient(){
            // 工程代碼泄露可能會導致 AccessKey 泄露,並威脅帳號下所有資源的安全性。以下程式碼範例僅供參考。
            // 建議使用更安全的 STS 方式,更多鑒權訪問方式請參見:https://www.alibabacloud.com/help/document_detail/311677.html。
            $stsConfig = new Config([
                // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_ID。
                "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
                "accessKeySecret" => getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET')
            ]);
            // Endpoint 請參考 https://api.aliyun.com/product/Sts
            $stsConfig->endpoint = "sts.cn-hangzhou.aliyuncs.com";
            $stsClient = new Sts($stsConfig);
            $assumeRoleRequest = new AssumeRoleRequest([
                // 要扮演的RAM角色ARN,樣本值:acs:ram::123456789012****:role/adminrole
                "roleArn" => "acs:ram::125499367423****:role/STStokenTestRole",
                // 角色會話名稱
                "roleSessionName" => "ststest",
                // 憑證有效時間長度,單位秒
                "durationSeconds" => 3600
            ]);
            $runtime = new RuntimeOptions([]);
            $resp = $stsClient->assumeRoleWithOptions($assumeRoleRequest, $runtime);
            $config = new Config([
                "accessKeyId" => $resp->body->credentials->accessKeyId,
                "accessKeySecret" => $resp->body->credentials->accessKeySecret,
                "securityToken" => $resp->body->credentials->securityToken
            ]);
            // Endpoint 請參考 https://api.aliyun.com/product/imm
            $config->endpoint = "imm.cn-hangzhou.aliyuncs.com";
            return new Imm($config);
        }
    
        /**
         * @param string[] $args
         * @return void
         */
        public static function main($args){
            $client = self::createClient();
            $detectImageFacesRequest = new DetectImageFacesRequest([
                "projectName" => "imm-php-sdk-doc-demo",
                "sourceURI" => "oss://your-bucket-name/your-path/your-image.jpg"
            ]);
            $runtime = new RuntimeOptions([]);
            try {
                // 複製代碼運行請自行列印 API 的傳回值
               print_r($client->detectImageFacesWithOptions($detectImageFacesRequest, $runtime));
            }
            catch (Exception $error) {
                if (!($error instanceof TeaError)) {
                    $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
                }
                // 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
                // 錯誤 message
                var_dump($error->message);
                // 診斷地址
                var_dump($error->data["Recommend"]);
                Utils::assertAsString($error->message);
            }
        }
    }
    $path = __DIR__ . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
    if (file_exists($path)) {
        require_once $path;
    }
    Sample::main(array_slice($argv, 1));
  2. 執行php demo.php命令,控制台輸出結果如下。

    AlibabaCloud\SDK\Imm\V20200930\Models\DetectImageFacesResponse Object
    (
        [headers] => Array
            (
                [Date] => Array
                    (
                        [0] => Thu, 18 Jul 2024 03:42:20 GMT
                    )
    
                [Content-Type] => Array
                    (
                        [0] => application/json;charset=utf-8
                    )
    
                [Content-Length] => Array
                    (
                        [0] => 680
                    )
    
                [Connection] => Array
                    (
                        [0] => keep-alive
                    )
    
                [Keep-Alive] => Array
                    (
                        [0] => timeout=25
                    )
    
                [Access-Control-Allow-Origin] => Array
                    (
                        [0] => *
                    )
    
                [Access-Control-Expose-Headers] => Array
                    (
                        [0] => *
                    )
    
                [x-acs-request-id] => Array
                    (
                        [0] => 597781D7-B528-58BE-994A-EB45A845AB32
                    )
    
                [x-acs-trace-id] => Array
                    (
                        [0] => 305d56e78b78b8e26bb6f71d4c56778c
                    )
    
                [ETag] => Array
                    (
                        [0] => 6G4qBOpKbiH3Vxe6OzA6yRw0
                    )
    
            )
    
        [statusCode] => 200
        [body] => AlibabaCloud\SDK\Imm\V20200930\Models\DetectImageFacesResponseBody Object
            (
                [faces] => Array
                    (
                        [0] => AlibabaCloud\SDK\Imm\V20200930\Models\Figure Object
                            (
                                [age] => 45
                                [ageSD] => 7
                                [attractive] => 0.044
                                [beard] => none
                                [beardConfidence] => 0.987
                                [boundary] => AlibabaCloud\SDK\Imm\V20200930\Models\Boundary Object
                                    (
                                        [height] => 381
                                        [left] => 182
                                        [polygon] =>
                                        [top] => 175
                                        [width] => 304
                                        [_name:protected] => Array
                                            (
                                                [height] => Height
                                                [left] => Left
                                                [polygon] => Polygon
                                                [top] => Top
                                                [width] => Width
                                            )
    
                                        [_required:protected] => Array
                                            (
                                            )
    
                                    )
    
                                [emotion] => happiness
                                [emotionConfidence] => 0.984
                                [faceQuality] => 0.942
                                [figureClusterConfidence] =>
                                [figureClusterId] => figure-cluster-id-unavailable
                                [figureConfidence] => 1
                                [figureId] => b641a062-0f29-4bf3-b2f6-0f1972a260a3
                                [figureType] => face
                                [gender] => female
                                [genderConfidence] => 1
                                [glasses] => glasses
                                [glassesConfidence] => 0.976
                                [hat] => none
                                [hatConfidence] => 1
                                [headPose] => AlibabaCloud\SDK\Imm\V20200930\Models\HeadPose Object
                                    (
                                        [pitch] => -16.206
                                        [roll] => -5.124
                                        [yaw] => 3.421
                                        [_name:protected] => Array
                                            (
                                                [pitch] => Pitch
                                                [roll] => Roll
                                                [yaw] => Yaw
                                            )
    
                                        [_required:protected] => Array
                                            (
                                            )
    
                                    )
    
                                [mask] => none
                                [maskConfidence] => 0.764
                                [mouth] => open
                                [mouthConfidence] => 0.999
                                [sharpness] => 1
                                [_name:protected] => Array
                                    (
                                        [age] => Age
                                        [ageSD] => AgeSD
                                        [attractive] => Attractive
                                        [beard] => Beard
                                        [beardConfidence] => BeardConfidence
                                        [boundary] => Boundary
                                        [emotion] => Emotion
                                        [emotionConfidence] => EmotionConfidence
                                        [faceQuality] => FaceQuality
                                        [figureClusterConfidence] => FigureClusterConfidence
                                        [figureClusterId] => FigureClusterId
                                        [figureConfidence] => FigureConfidence
                                        [figureId] => FigureId
                                        [figureType] => FigureType
                                        [gender] => Gender
                                        [genderConfidence] => GenderConfidence
                                        [glasses] => Glasses
                                        [glassesConfidence] => GlassesConfidence
                                        [hat] => Hat
                                        [hatConfidence] => HatConfidence
                                        [headPose] => HeadPose
                                        [mask] => Mask
                                        [maskConfidence] => MaskConfidence
                                        [mouth] => Mouth
                                        [mouthConfidence] => MouthConfidence
                                        [sharpness] => Sharpness
                                    )
    
                                [_required:protected] => Array
                                    (
                                    )
    
                            )
    
                    )
    
                [requestId] => 597781D7-B528-58BE-994A-EB45A845AB32
                [_name:protected] => Array
                    (
                        [faces] => Faces
                        [requestId] => RequestId
                    )
    
                [_required:protected] => Array
                    (
                    )
    
            )
    
        [_name:protected] => Array
            (
                [headers] => headers
                [statusCode] => statusCode
                [body] => body
            )
    
        [_required:protected] => Array
            (
            )
    
    )
    

使用長期訪問憑證

當您準備臨時使用PHP SDK訪問IMM服務時,可以參考配置長期訪問憑證

如下以在華東1(杭州)地區中檢測圖片中的人臉及人臉資訊為例,介紹如何使用長期訪問憑證通過Intelligent Media ManagementPHP SDK調用對應API。

  1. 建立demo.php檔案並寫入如下內容。

    <?php
    
    // This file is auto-generated, don't edit it. Thanks.
    namespace AlibabaCloud\SDK\Sample;
    
    use AlibabaCloud\SDK\Imm\V20200930\Imm;
    use \Exception;
    use AlibabaCloud\Tea\Exception\TeaError;
    use AlibabaCloud\Tea\Utils\Utils;
    
    use Darabonba\OpenApi\Models\Config;
    use AlibabaCloud\SDK\Imm\V20200930\Models\DetectImageFacesRequest;
    use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
    
    class Sample {
    
        /**
         * 使用AK&SK初始化帳號Client
         * @return Imm Client
         */
        public static function createClient(){
            // 工程代碼泄露可能會導致 AccessKey 泄露,並威脅帳號下所有資源的安全性。以下程式碼範例僅供參考。
            // 建議使用更安全的 STS 方式,更多鑒權訪問方式請參見:https://www.alibabacloud.com/help/document_detail/311677.html。
            $config = new Config([
                // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_ID。
                "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
                "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
            ]);
            // Endpoint 請參考 https://api.aliyun.com/product/imm
            $config->endpoint = "imm.cn-beijing.aliyuncs.com";
            return new Imm($config);
        }
    
        /**
         * @param string[] $args
         * @return void
         */
        public static function main($args){
            $client = self::createClient();
            $detectImageFacesRequest = new DetectImageFacesRequest([
                "projectName" => "imm-php-sdk-doc-demo",
                "sourceURI" => "oss://your-bucket-name/your-path/your-image.jpg"
            ]);
            $runtime = new RuntimeOptions([]);
            try {
                // 複製代碼運行請自行列印 API 的傳回值
               print_r($client->detectImageFacesWithOptions($detectImageFacesRequest, $runtime));
            }
            catch (Exception $error) {
                if (!($error instanceof TeaError)) {
                    $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
                }
                // 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
                // 錯誤 message
                var_dump($error->message);
                // 診斷地址
                var_dump($error->data["Recommend"]);
                Utils::assertAsString($error->message);
            }
        }
    }
    $path = __DIR__ . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
    if (file_exists($path)) {
        require_once $path;
    }
    Sample::main(array_slice($argv, 1));
  2. 執行php demo.php命令,控制台輸出結果如下。

    Array
    (
        [Faces] => Array
            (
                [0] => Array
                    (
                        [Age] => 12
                        [AgeSD] => 5
                        [Attractive] => 0.12099999934435
                        [Beard] => none
                        [BeardConfidence] => 0.99800002574921
                        [Boundary] => Array
                            (
                                [Height] => 87
                                [Left] => 280
                                [Top] => 36
                                [Width] => 70
                            )
                        [Emotion] => none
                        [EmotionConfidence] => 0.99500000476837
                        [FaceQuality] => 0.8289999961853
                        [FigureClusterId] => figure-cluster-id-unavailable
                        [FigureConfidence] => 0.9990000128746
                        [FigureId] => 3acab8ff-48e7-4647-ac57-b48834db7278
                        [FigureType] => face
                        [Gender] => male
                        [GenderConfidence] => 0.95099997520447
                        [Glasses] => none
                        [GlassesConfidence] => 1
                        [Hat] => hat
                        [HatConfidence] => 0.9879999756813
                        [HeadPose] => Array
                            (
                                [Pitch] => -12.309000015259
                                [Roll] => -11.362000465393
                                [Yaw] => 3.4430000782013
                            )
                        [Mask] => none
                        [MaskConfidence] => 0.7509999871254
                        [Mouth] => open
                        [MouthConfidence] => 0.56699997186661
                        [Sharpness] => 0.8870000243187
                    )
            )
        [RequestId] => F6D3FE7E-F0D7-0A5B-AE34-7453991DF9F2
    )