本文介绍图像搜索服务.Net SDK的使用方法及示例。
接口列表
接口名称 | 接口说明 |
---|---|
Add | 增加图片。 |
SearchImageByPic | 使用图片进行搜索。 |
SearchImageByName | 指定名称,使用已入库的图片进行搜索。 |
Delete | 删除图片。 |
准备工作
在安装和使用阿里云SDK前,确保您已经注册阿里云账号并生成访问密钥(AccessKey)。详情请参见创建AccessKey。
- 在解决方案资源管理器面板中,右键单击您的项目,选择管理NuGet程序包菜单。
- 在打开的NuGet管理面板中单击浏览选项卡输入AlibabaCloud.SDK.ImageSearch20201214 。
- 单击安装。
Add接口
- 代码示例
using AlibabaCloud.OpenApiClient.Models; using AlibabaCloud.SDK.ImageSearch20201214.Models; using AlibabaCloud.SDK.ImageSearch20201214; using AlibabaCloud.TeaUtil.Models; using System; using System.IO; namespace Test { class Add { static void Main(string[] args) { // Console.WriteLine("Hello World!"); Config config = new Config(); config.AccessKeyId = "XXXXXXXXXXX"; config.AccessKeySecret = "XXXXXXXXXXXXXXXXXXXXXXXX"; config.Endpoint = "imagesearch.cn-shanghai.aliyuncs.com"; config.RegionId = "cn-shanghai"; config.Type = "access_key"; Client client = new Client(config); FileStream fs = File.OpenRead("D:/111.jpg"); AddImageAdvanceRequest request = new AddImageAdvanceRequest(); // 必填,图片名称,最多支持 512个字符。 // 1. ProductId + PicName唯一确定一张图片。 // 2. 如果多次添加图片具有相同的ProductId + PicName,以最后一次添加为准,前面添加的图片将被覆盖 request.PicName = "xusong.jpg"; // 必填,商品id,最多支持 512个字符。 // 一个商品可有多张图片。 request.ProductId = "1001"; // 必填,图像搜索实例名称。 request.InstanceName = "XXXXXXXXXXXXXXXXXXXXXXXXX"; // 图片内容,最多支持 4MB大小图片以及5s的传输等待时间。当前仅支持PNG、JPG、JPEG、BMP、GIF、WEBP、TIFF、PPM格式图片; // 对于商品、通用图片搜索,图片长和宽的像素必须都大于等于100且小于等于4096; // 对于布料搜索,图片长和宽的像素必须都大于等于448且小于等于4096; // 图像中不能带有旋转信息 request.PicContentObject = fs; // 选填,整数类型属性,可用于查询时过滤,查询时会返回该字段。 // 例如不同的站点的图片/不同用户的图片,可以设置不同的IntAttr,查询时通过过滤来达到隔离的目的 request.IntAttr = 99; // 选填,字符串类型属性,最多支持 128个字符。可用于查询时过滤,查询时会返回该字段。 request.StrAttr = "aliyun.com"; // 选填,图片类目。 // 1. 对于商品搜索:若设置类目,则以设置的为准;若不设置类目,将由系统进行类目预测,预测的类目结果可在Response中获取 。 // 2. 对于通用搜索:不论是否设置类目,系统会将类目设置为88888888。 request.CategoryId = 5; // 选填,是否需要进行主体识别,默认为true。 // 1.为true时,由系统进行主体识别,以识别的主体进行搜索,主体识别结果可在Response中获取。 // 设置的region 区域不要超过图片的边界。 // 2. 为false时,则不进行主体识别,以整张图进行搜索。 request.Crop = true; // 选填,图片的主体区域,格式为 x1,x2,y1,y2, 其中 x1,y1 是左上角的点,x2,y2是右下角的点。 // 若用户设置了Region,则不论Crop参数为何值,都将以用户输入Region进行搜索。 request.Region = "66,333,97,356"; RuntimeOptions runtimeObject = new RuntimeOptions(); try { AddImageResponse response = client.AddImageAdvance(request, runtimeObject); Console.WriteLine("result:" + Newtonsoft.Json.JsonConvert.SerializeObject(response)) } catch (TeaUnretryableException e) { Console.WriteLine("InnerException结果:" + e.InnerException.Message); Console.WriteLine("Data结果:" + e.Data); Console.WriteLine("Message结果:" + e.Message); Console.WriteLine("打印String:" + e.ToString()); } } } }
- 结果示例
result:{"Headers":{"date":"Mon, 11 Jan 2021 06:57:16 GMT","connection":"keep-alive","access-control-allow-origin":"*","access-control-allow-methods":"POST, GET, OPTIONS","access-control-allow-headers":"X-Requested-With, X-Sequence, _aop_secret, _aop_signature","access-control-max-age":"172800","x-acs-request-id":"6D32C931-D584-4927-938A-6053AE9B630D"},"Body":{"Message":"success","RequestId":"6D32C931-D584-4927-938A-6053AE9B630D","Code":0,"PicInfo":{"Region":"112,440,76,387","CategoryId":88888888},"Success":true}}
SearchImageByPic接口
- 代码示例
using AlibabaCloud.OpenApiClient.Models; using AlibabaCloud.SDK.ImageSearch20201214.Models; using AlibabaCloud.SDK.ImageSearch20201214; using AlibabaCloud.TeaUtil.Models; using System; using System.IO; namespace Test { class SearchImageByPic { static void Main(string[] args) { Config config = new Config(); config.AccessKeyId = "XXXXXXXX"; config.AccessKeySecret = "XXXXXXXXXXXXX"; config.Endpoint = "imagesearch.cn-shanghai.aliyuncs.com"; config.RegionId = "cn-shanghai"; config.Type = "access_key"; Client client = new Client(config); FileStream fs = File.OpenRead("D:/123.jpg"); SearchImageByPicAdvanceRequest request = new SearchImageByPicAdvanceRequest(); // 选填,商品类目。 // 1. 对于商品搜索:若设置类目,则以设置的为准;若不设置类目,将由系统进行类目预测,预测的类目结果可在Response中获取 。 // 2. 对于通用搜索:不论是否设置类目,系统会将类目设置为88888888。 request.CategoryId = 5; // 图片内容,最多支持 4MB大小图片以及5s的传输等待时间。当前仅支持PNG、JPG、JPEG、BMP、GIF、WEBP、TIFF、PPM格式图片; // 对于商品、商标、通用图片搜索,图片长和宽的像素必须都大于等于100且小于等于4096; // 对于布料搜索,图片长和宽的像素必须都大于等于448且小于等于4096; // 图像中不能带有旋转信息 request.PicContentObject = fs; // 选填,是否需要进行主体识别,默认为true。 // 1.为true时,由系统进行主体识别,以识别的主体进行搜索,主体识别结果可在Response中获取。 // 2. 为false时,则不进行主体识别,以整张图进行搜索。 request.Crop = true; // 选填,过滤条件 // int_attr支持的操作符有>、>=、<、<=、=,str_attr支持的操作符有=和!=,多个条件之支持AND和OR进行连接。 // 示例: //1. 根据IntAttr过滤结果,int_attr>=100 //2. 根据StrAttr过滤结果,str_attr!="value1" //3. 根据IntAttr和StrAttr联合过滤结果,int_attr=1000 AND str_attr="value1" request.Filter = "int_attr=99"; // 选填,图片的主体区域,格式为 x1,x2,y1,y2, 其中 x1,y1 是左上角的点,x2,y2是右下角的点。 // 设置的region 区域不要超过图片的边界。 // 若用户设置了Region,则不论Crop参数为何值,都将以用户输入Region进行搜索。 request.Region = "66,333,98,356"; // 必填,图像搜索实例名称。 request.InstanceName = "XXXXXX"; RuntimeOptions runtimeObject = new RuntimeOptions(); try { SearchImageByPicResponse response = client.SearchImageByPicAdvance(request, runtimeObject); String result = Newtonsoft.Json.JsonConvert.SerializeObject(response); Console.WriteLine("result:" + result); } catch (TeaUnretryableException e) { Console.WriteLine("InnerException结果:" + e.InnerException.Message); Console.WriteLine("Data结果:" + e.Data); Console.WriteLine("Message结果:" + e.Message); Console.WriteLine("打印String:" + e.ToString()); } } } }
- 结果示例
result: { "RequestId":"632814A0-F34D-46FB-882D-81D74E7C3290", "Success":true, "Code":0, "Msg":"success", "Auctions":[ { "CategoryId":0, "ProductId":"test", "PicName":"test.jpg", "CustomContent":null, "Score":1.0 "SortExprValues":"7.33136443711219;0", "IntAttr":null, "StrAttr":null }, {......} ], "Head":{ "DocsReturn":4, "DocsFound":4, "SearchTime":155 }, "PicInfo":{ "CategoryId":0, "Region":"202,596,155,637", "AllCategories":[{"Id":0,"Name":"Tops"},{.....}], "MultiRegion":[ {"Region":"112,440,76,387"} ] } }
SearchImageByName接口
- 代码示例
using AlibabaCloud.OpenApiClient.Models; using AlibabaCloud.SDK.ImageSearch20201214.Models; using AlibabaCloud.SDK.ImageSearch20201214; using AlibabaCloud.TeaUtil.Models; using System; using System.IO; namespace Test { class SearchImageByName { static void Main(string[] args) { Config config = new Config(); config.AccessKeyId = "XXXXXXXX"; config.AccessKeySecret = "XXXXXXXXXXX"; config.Endpoint = "imagesearch.cn-shanghai.aliyuncs.com"; config.RegionId = "cn-shanghai"; config.Type = "access_key"; Client client = new Client(config); SearchImageByNameRequest request = new SearchImageByNameRequest(); // 选填,商品类目。 // 1. 对于商品搜索:若设置类目,则以设置的为准;若不设置类目,将由系统进行类目预测,预测的类目结果可在Response中获取 。 // 2. 对于通用搜索:不论是否设置类目,系统会将类目设置为88888888。 request.CategoryId = 5; // 必填,图像搜索实例名称 request.InstanceName = "XXXXXXXXXX"; // 必填,图片名称,最多支持 512个字符。 // 1. ProductId + PicName唯一确定一张图片 request.PicName = "xusong.jpg"; // 必填,商品id,最多支持 512个字符。 // 一个商品可有多张图片。 request.ProductId = "1001"; try { SearchImageByNameResponse response = client.SearchImageByName(request); String result = Newtonsoft.Json.JsonConvert.SerializeObject(response); Console.WriteLine("result:" + result); } catch (TeaUnretryableException e) { Console.WriteLine("InnerException结果:" + e.InnerException.Message); Console.WriteLine("Data结果:" + e.Data); Console.WriteLine("Message结果:" + e.Message); Console.WriteLine("打印String:" + e.ToString()); } } } }
- 结果示例
result: { "RequestId":"5B16E5CD-FE8A-4A4E-A90B-02A5C9F8BD81", "Success":true, "Code":0, "Msg":"success", "Auctions":[ { "CategoryId":0, "ProductId":"test", "PicName":"test.jpg", "CustomContent":null, "Score":1.0 "SortExprValues":"7.33136443711219;0", "IntAttr":null, "StrAttr":null }, {....} ], "Head":{ "DocsReturn":4, "DocsFound":4, "SearchTime":50 }, "PicInfo":{ "CategoryId":0, "Region":null, "AllCategories":[ {"Id":0,"Name":"Tops"}, {...} ], "MultiRegion":[ {"Region":"112,440,76,387"} ] } }
Delete接口
- 代码示例
using AlibabaCloud.OpenApiClient.Models; using AlibabaCloud.SDK.ImageSearch20201214.Models; using AlibabaCloud.SDK.ImageSearch20201214; using AlibabaCloud.TeaUtil.Models; using System; using System.IO; namespace Test { class Delete { static void Main(string[] args) { Config config = new Config(); config.AccessKeyId = "XXXXXXXXX"; config.AccessKeySecret = "XXXXXXXXX"; config.Endpoint = "imagesearch.cn-shanghai.aliyuncs.com"; config.RegionId = "cn-shanghai"; config.Type = "access_key"; Client client = new Client(config); DeleteImageRequest request = new DeleteImageRequest(); // 必填,图像搜索实例名称。 request.InstanceName = "XXXXXXXXXXX"; // 必填,图片名称,最多支持 512个字符。 // 1. ProductId + PicName唯一确定一张图片。 request.PicName = "xusong.jpg"; // 选填,图片名称。若不指定本参数,则删除ProductId下所有图片;若指定本参数,则删除ProductId+PicName指定的图片。 request.ProductId = "1001"; try { DeleteImageResponse response = client.DeleteImage(request); Console.WriteLine("RequestId:" + response.Body.RequestId); Console.WriteLine("Message:" + response.Body.Message); Console.WriteLine("Code:" + response.Body.Code); } catch (TeaUnretryableException e) { Console.WriteLine("InnerException结果:" + e.InnerException.Message); Console.WriteLine("Data结果:" + e.Data); Console.WriteLine("Message结果:" + e.Message); Console.WriteLine("打印String:" + e.ToString()); } } } }
- 结果示例
RequestId:D9BDEAE0-674C-4126-9D76-A79F0BE9E881 Message:success Code:0