实时进行反向图像搜索和纠正倾斜图片是构建视觉搜索功能的开发者常见的挑战。 Aspose.CAD Cloud SDK for .NET 提供了一个强大的库,简化了在 C# 中进行反向图像搜索和图像去倾斜。在本指南中,您将看到如何对 PNG 进行去倾斜,调用 Bing Visual Search 进行反向查找,并使用简洁的代码和 cURL 示例集成整个工作流。

开始之前:先决条件和安装

要遵循本教程,您需要:

  • .NET 6.0 或更高版本,以及 Visual Studio 2022 等 IDE。
  • 拥有 API 密钥和客户端密钥的 Aspose Cloud 账户。
  • 访问 Bing Visual Search API(需要订阅密钥)。
  • 将输入图像文件 (input.png) 放置在项目文件夹中。

通过 NuGet 安装库:

dotnet add package Aspose.cad-Cloud

从下载页面下载最新的包。安装完成后,您可以开始编写工作流代码。

逐步构建:.NET 中的反向图像搜索和图像去倾斜

实现分为五个逻辑步骤。每个步骤仅显示从完整示例中提取的相关代码。

第一步:加载源图像

将 PNG 文件读取为字节数组,并创建一个库可以使用的内存流。

string inputImagePath = "input.png";
byte[] inputBytes = File.ReadAllBytes(inputImagePath);
using var inputStream = new MemoryStream(inputBytes);

步骤 2:配置 Aspose.CAD 云库

使用您的 API 密钥和基础 URL 创建配置对象,然后实例化 ImageApi。

var config = new Configuration
{
    ApiKey = "YOUR_ASPOSE_CAD_CLOUD_API_KEY",
    BasePath = "https://api.aspose.cloud"
};
var imageApi = new ImageApi(config);

欲了解更多详情,请参阅 API reference。

步骤 3:使用库对图像进行去倾斜

使用图像流构建 DeskewImageRequest 并调用去倾斜操作。

var deskewRequest = new DeskewImageRequest
{
    ImageData = inputStream
    // Optional: Angle, BackgroundColor can be set here
};
byte[] deskewedBytes = await imageApi.PostImageDeskewAsync(deskewRequest);

第4步:保存去倾斜的图像

将返回的字节数组写入新文件。

string deskewedImagePath = "deskewed.png";
File.WriteAllBytes(deskewedImagePath, deskewedBytes);
Console.WriteLine($"Deskewed image saved to {deskewedImagePath}");

步骤 5:通过 Bing Visual Search API 执行反向图像搜索

创建一个 HttpClient,添加订阅密钥标头,并将原始图像发布到 Bing。

string bingSubscriptionKey = "YOUR_BING_VISUAL_SEARCH_SUBSCRIPTION_KEY";
string bingEndpoint = "https://api.bing.microsoft.com/v7.0/images/visualsearch";

using var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", bingSubscriptionKey);

using var multipartContent = new MultipartFormDataContent();
var imageContent = new ByteArrayContent(inputBytes);
imageContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/octet-stream");
multipartContent.Add(imageContent, "image", Path.GetFileName(inputImagePath));

HttpResponseMessage response = await httpClient.PostAsync(bingEndpoint, multipartContent);
string jsonResult = await response.Content.ReadAsStringAsync();

Console.WriteLine("Reverse Image Search Result:");
Console.WriteLine(jsonResult);

通过这些步骤,您在 C# 中拥有完整的反向图像搜索和图像去倾斜工作流。

逆向图像搜索和图像去倾斜自动化的完整工作示例

下面的示例演示了如何将所有部分组合成一个单独的控制台应用程序。

using System;
using System.IO;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using Aspose.CAD.Cloud.Sdk.Api;
using Aspose.CAD.Cloud.Sdk.Client;
using Aspose.CAD.Cloud.Sdk.Model;

namespace ReverseImageSearchDeskew
{
    class Program
    {
        static async Task Main(string[] args)
        {
            // Aspose.CAD Cloud configuration
            var config = new Configuration
            {
                ApiKey = "YOUR_ASPOSE_CAD_CLOUD_API_KEY",
                BasePath = "https://api.aspose.cloud"
            };
            var imageApi = new ImageApi(config);

// File paths
            string inputImagePath = "input.png";
            string deskewedImagePath = "deskewed.png";

// Load input image
            byte[] inputBytes = File.ReadAllBytes(inputImagePath);
            using var inputStream = new MemoryStream(inputBytes);

// Deskew the image using Aspose.CAD Cloud
            var deskewRequest = new DeskewImageRequest
            {
                ImageData = inputStream
                // Additional optional parameters (e.g., Angle, BackgroundColor) can be set here
            };
            byte[] deskewedBytes = await imageApi.PostImageDeskewAsync(deskewRequest);
            File.WriteAllBytes(deskewedImagePath, deskewedBytes);
            Console.WriteLine($"Deskewed image saved to {deskewedImagePath}");

// Reverse image search using Bing Visual Search API
            string bingSubscriptionKey = "YOUR_BING_VISUAL_SEARCH_SUBSCRIPTION_KEY";
            string bingEndpoint = "https://api.bing.microsoft.com/v7.0/images/visualsearch";

using var httpClient = new HttpClient();
            httpClient.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", bingSubscriptionKey);

using var multipartContent = new MultipartFormDataContent();
            var imageContent = new ByteArrayContent(inputBytes);
            imageContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/octet-stream");
            multipartContent.Add(imageContent, "image", Path.GetFileName(inputImagePath));

HttpResponseMessage response = await httpClient.PostAsync(bingEndpoint, multipartContent);
            string jsonResult = await response.Content.ReadAsStringAsync();

Console.WriteLine("Reverse Image Search Result:");
            Console.WriteLine(jsonResult);
        }
    }

// Request model for deskew operation (matches Aspose.CAD Cloud SDK expectations)
    public class DeskewImageRequest
    {
        public Stream ImageData { get; set; }
        // Optional: public double? Angle { get; set; }
        // Optional: public string BackgroundColor { get; set; }
    }
}

注意: 此代码示例演示了核心功能。在将其用于项目之前,请确保更新所有文件路径和配置值以匹配实际环境,验证已正确安装所有必需的依赖项,并在开发环境中彻底测试。如果遇到任何问题,请参阅官方文档或联系支持团队获取帮助。

通过 REST API 使用 cURL 执行相同操作

如果您更喜欢纯 REST 方法,可以使用 cURL 命令执行相同的工作流。

1. 进行身份验证并获取访问令牌

curl -X POST "https://api.aspose.cloud/connect/token" \
     -d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"

2. 上传源 PNG 并请求去除倾斜

curl -X PUT "https://api.aspose.cloud/v3.0/cad/deskew" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/octet-stream" \
     --data-binary @input.png \
     -o deskewed.png

3. 调用 Bing Visual Search 进行反向图像搜索

curl -X POST "https://api.bing.microsoft.com/v7.0/images/visualsearch" \
     -H "Ocp-Apim-Subscription-Key: YOUR_BING_VISUAL_SEARCH_SUBSCRIPTION_KEY" \
     -F "image=@input.png;type=application/octet-stream"

这些命令执行与 C# 代码中显示的相同步骤,允许您将功能集成到任何能够执行 shell 脚本的环境中。

有关其他参数和响应格式,请参阅官方 API 文档。

结论

在 C# 中实现反向图像搜索和图像去倾斜变得很简单,只需使用 Aspose.CAD Cloud SDK for .NET。该库处理图像预处理,而 Bing Visual Search 提供强大的反向查找功能。按照上述步骤,您可以构建一个稳健的视觉搜索流水线,在查询之前纠正倾斜的输入。请记得获取用于生产的有效许可证;产品页面上提供了定价详情,您也可以从临时许可证页面获取临时许可证。拥有代码和 cURL 示例后,您就可以将此功能集成到您的应用程序中。

常见问题

  • 在 C# 应用程序中,反向图像搜索和图像去倾斜能够实现什么?
    它可以自动纠正上传图片的方向,然后使用外部搜索服务查找视觉上相似的项目,从而提升用户体验和搜索准确性。

  • 我可以在库中使用除 PNG 之外的其他图像格式吗?
    是的,库支持常见的光栅格式,例如 JPG 和 BMP。只需在代码中更改文件扩展名。

  • 我需要托管任何服务来运行此代码吗?
    不,Aspose.CAD Cloud SDK for .NET 是一个基于云的库,所有处理都在 Aspose 服务器上进行。您只需要互联网连接和有效的凭据。

  • 如何高效处理大量图像批次?
    异步处理图像,缓存去倾斜后的结果,并在多个 API 调用中复用相同的访问令牌。这可以降低延迟和 API 开销。

阅读更多