Зворотний пошук зображень і виправлення спотворених фотографій у реальному часі — це поширена проблема для розробників, які створюють функції візуального пошуку. Aspose.CAD Cloud SDK for .NET надає потужну бібліотеку, яка спрощує як зворотний пошук зображень, так і випрямлення зображень у C#. У цьому посібнику ви побачите, як випрямити PNG, викликати Bing Visual Search для зворотного пошуку та інтегрувати весь процес за допомогою стислого коду та прикладів cURL.

Перед початком: Вимоги та встановлення

Щоб слідувати цьому підручнику, вам потрібно:

  • .NET 6.0 або новіший і IDE, наприклад Visual Studio 2022.
  • Обліковий запис Aspose Cloud з API‑ключем і секретом клієнта.
  • Доступ до Bing Visual Search API (потрібен ключ підписки).
  • Файл вхідного зображення (input.png) розташований у папці проєкту.

Встановіть бібліотеку через NuGet:

dotnet add package Aspose.cad-Cloud

Завантажте останній пакет зі сторінки завантаження. Після встановлення ви можете розпочати кодування робочого процесу.

Створюємо крок за кроком: зворотний пошук зображень та випрямлення зображень у .NET

Реалізація розбита на п’ять логічних кроків. Кожен крок показує лише відповідний код, витягнутий з повного прикладу.

Крок 1: Завантажте вихідне зображення

Прочитайте файл PNG у масив байтів і створіть потік пам’яті, який може споживати бібліотека.

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

Крок 2: Налаштуйте Aspose.CAD Cloud Library

Створіть об’єкт конфігурації з вашим 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.

Крок 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.

Читати далі