阿里雲API調試工具OpenAPI Explore提供OpenAPI文檔、API調試和SDK樣本,協助您快速入門API開發。本文介紹如何安裝和快速使用Intelligent Media ManagementC# SDK。
前提條件
已建立並擷取AccessKey。具體操作,請參見建立AccessKey。
已開通OSS服務、建立儲存空間並上傳檔案到儲存空間。具體操作,請參見控制台上傳檔案。
已開通Intelligent Media Management服務。具體操作,請參見開通產品。
已通過Intelligent Media Management控制台建立專案。具體操作,請參見建立專案。
說明您也可以調用API介面建立專案。具體操作,請參見CreateProject - 建立專案。
您可以調用ListProjects - 列出所有專案資訊的列表介面列出指定地區下已建立的所有專案資訊。
安裝SDK
調用2020-09-30版本的API,需要使用2020-09-30版本的SDK。
使用Intelligent Media ManagementC# SDK的操作步驟請參見快速入門。
訪問憑證
您可以選擇以下類型的訪問憑證。
臨時訪問憑證:對於需要高安全性的情境,例如臨時授權應用訪問IMM,建議使用臨時訪問憑證。臨時訪問憑證可以限制訪問的有效期間,從而減少訪問憑證泄露的風險。此外,臨時訪問憑證支援許可權控制,可以有效地避免許可權過大的問題。
長期訪問憑證:出於安全性考慮,不建議您使用長期訪問憑證,建議您使用臨時訪問憑證。對於需要便利性的情境,長期訪問憑證可以在較長時間內免除多次重新整理的麻煩。建議每三個月更換一次長期訪問憑證,以提高帳號的安全性。當長期訪問憑證泄露或者不再使用時,應該及時刪除或者禁用相關的訪問憑證,以免造成安全風險。
使用臨時訪問憑證
當您準備臨時使用C# SDK訪問IMM服務時,可以參考配置臨時訪問憑證。
如下以在華東1(杭州)地區中檢測圖片中的人臉及人臉資訊為例,介紹如何使用臨時訪問憑證通過Intelligent Media ManagementC# SDK調用對應API。
複製使用如下範例程式碼時請將訪問網域名稱換成您的IMM專案所在Region的網域名稱,並且IMM專案和OSS檔案Region需要保持一致。
編輯
Program.cs。如下以在華東1(杭州)地區中檢測圖片中的人臉及人臉資訊為例介紹如何使用Intelligent Media ManagementC# SDK。// This file is auto-generated, don't edit it. Thanks. using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; using Newtonsoft.Json; using Tea; using Tea.Utils; using Aliyun.Credentials.Models; namespace AlibabaCloud.SDK.Sample { public class Sample { /** * 使用AK&SK初始化帳號Client * @return Client * @throws Exception */ public static AlibabaCloud.SDK.Imm20200930.Client CreateClient() { // 使用預設憑證初始化Credentials Client。 Aliyun.Credentials.Models.Config credentialsConfig = new Aliyun.Credentials.Models.Config() { // 憑證類型。 Type = "sts", // <ALIBABA_CLOUD_ACCESS_KEY_ID>需替換為返回資料中擷取的臨時AccessKeyId。 AccessKeyId = "<ALIBABA_CLOUD_ACCESS_KEY_ID>", // <ALIBABA_CLOUD_ACCESS_KEY_SECRET>需替換為返回資料中擷取的臨時AccessKeySecret。 AccessKeySecret = "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>", // <ALIBABA_CLOUD_SECURITY_TOKEN>需替換為返回資料中擷取的臨時SecurityToken。 SecurityToken = "<ALIBABA_CLOUD_SECURITY_TOKEN>" }; Aliyun.Credentials.Client credentialClient = new Aliyun.Credentials.Client(credentialsConfig); AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config() { Credential = credentialClient, // 配置雲產品服務接入地址(endpoint)。 Endpoint = "imm.cn-beijing.aliyuncs.com" }; return new AlibabaCloud.SDK.Imm20200930.Client(config); } public static void Main(string[] args) { // 初始化ECS Client。 AlibabaCloud.SDK.Imm20200930.Client client = CreateClient(); AlibabaCloud.SDK.Imm20200930.Models.DetectImageFacesRequest detectImageFacesRequest = new AlibabaCloud.SDK.Imm20200930.Models.DetectImageFacesRequest { ProjectName = "test", SourceURI = "oss://your-bucket-name/your-path/your-image.jpg", }; AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); try { // 複製代碼運行請自行列印 API 的傳回值 Console.WriteLine(JsonConvert.SerializeObject(client.DetectImageFacesWithOptions(detectImageFacesRequest, runtime).Body)); } catch (TeaException error) { // 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。 // 錯誤 message Console.WriteLine(error.Message); // 診斷地址 Console.WriteLine(error.Data["Recommend"]); AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); } catch (Exception _error) { TeaException error = new TeaException(new Dictionary<string, object> { { "message", _error.Message } }); // 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。 // 錯誤 message Console.WriteLine(error.Message); // 診斷地址 Console.WriteLine(error.Data["Recommend"]); AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); } } } }執行
csc /out:D:\Program.cs D:\Program.exe編譯,運行Program.exe輸出結果如下。{ "RequestId": "2CCA6D7E-C9FB-5C87-8AC5-D6E6AC493096", "Faces": [ { "Beard": "none", "MaskConfidence": 0.83, "Gender": "female", "Boundary": { "Left": 81, "Top": 62, "Height": 127, "Width": 96 }, "BeardConfidence": 1, "FigureId": "0fccc5f9-22df-4507-ac53-f6a37f11a15a", "Mouth": "open", "Emotion": "happiness", "Age": 25, "MouthConfidence": 0.998, "FigureType": "face", "GenderConfidence": 1, "HeadPose": { "Pitch": -27.196, "Roll": 6.075, "Yaw": 3.477 }, "Mask": "none", "EmotionConfidence": 0.999, "HatConfidence": 1, "GlassesConfidence": 1, "Sharpness": 1, "FigureClusterId": "figure-cluster-id-unavailable", "FaceQuality": 0.998, "Attractive": 0.998, "AgeSD": 7, "Glasses": "none", "FigureConfidence": 0.999, "Hat": "none" } ] }
使用長期訪問憑證
如下以在華東1(杭州)地區中檢測圖片中的人臉及人臉資訊為例,介紹如何使用臨時訪問憑證通過Intelligent Media ManagementC# SDK調用對應API。
編輯
Program.cs。如下以在華東1(杭州)地區中檢測圖片中的人臉及人臉資訊為例介紹如何使用Intelligent Media ManagementC# SDK。// This file is auto-generated, don't edit it. Thanks. using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; using Newtonsoft.Json; using Tea; using Tea.Utils; namespace AlibabaCloud.SDK.Sample { public class Sample { /** * 使用AK&SK初始化帳號Client * @return Client * @throws Exception */ public static AlibabaCloud.SDK.Imm20200930.Client CreateClient() { // 工程代碼泄露可能會導致 AccessKey 泄露,並威脅帳號下所有資源的安全性。以下程式碼範例僅供參考。 // 建議使用更安全的 STS 方式,更多鑒權訪問方式請參見:https://www.alibabacloud.com/help/document_detail/378671.html。 AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_ID。 AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"), // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), }; // Endpoint 請參考 https://api.aliyun.com/product/imm config.Endpoint = "imm.cn-beijing.aliyuncs.com"; return new AlibabaCloud.SDK.Imm20200930.Client(config); } public static void Main(string[] args) { AlibabaCloud.SDK.Imm20200930.Client client = CreateClient(); AlibabaCloud.SDK.Imm20200930.Models.DetectImageFacesRequest detectImageFacesRequest = new AlibabaCloud.SDK.Imm20200930.Models.DetectImageFacesRequest { ProjectName = "test", SourceURI = "oss://your-bucket-name/your-path/your-image.jpg", }; AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); try { // 複製代碼運行請自行列印 API 的傳回值 Console.WriteLine(JsonConvert.SerializeObject(client.DetectImageFacesWithOptions(detectImageFacesRequest, runtime).Body)); } catch (TeaException error) { // 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。 // 錯誤 message Console.WriteLine(error.Message); // 診斷地址 Console.WriteLine(error.Data["Recommend"]); AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); } catch (Exception _error) { TeaException error = new TeaException(new Dictionary<string, object> { { "message", _error.Message } }); // 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。 // 錯誤 message Console.WriteLine(error.Message); // 診斷地址 Console.WriteLine(error.Data["Recommend"]); AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); } } } }執行
csc /out:D:\Program.cs D:\Program.exe編譯,運行Program.exe輸出結果如下。{ "RequestId": "2CCA6D7E-C9FB-5C87-8AC5-D6E6AC493096", "Faces": [ { "Beard": "none", "MaskConfidence": 0.83, "Gender": "female", "Boundary": { "Left": 81, "Top": 62, "Height": 127, "Width": 96 }, "BeardConfidence": 1, "FigureId": "0fccc5f9-22df-4507-ac53-f6a37f11a15a", "Mouth": "open", "Emotion": "happiness", "Age": 25, "MouthConfidence": 0.998, "FigureType": "face", "GenderConfidence": 1, "HeadPose": { "Pitch": -27.196, "Roll": 6.075, "Yaw": 3.477 }, "Mask": "none", "EmotionConfidence": 0.999, "HatConfidence": 1, "GlassesConfidence": 1, "Sharpness": 1, "FigureClusterId": "figure-cluster-id-unavailable", "FaceQuality": 0.998, "Attractive": 0.998, "AgeSD": 7, "Glasses": "none", "FigureConfidence": 0.999, "Hat": "none" } ] }