جستجوی معکوس تصویر و اصلاح تصاویر کج بهصورت لحظهای یک چالش رایج برای توسعهدهندگانی است که ویژگیهای جستجوی بصری را میسازند. Aspose.CAD Cloud SDK for .NET کتابخانهای قدرتمند ارائه میدهد که هم جستجوی معکوس تصویر و هم اصلاح تصویر (Deskewing) را در 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);
مرحله ۲: پیکربندی کتابخانهٔ ابری 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 مراجعه کنید.
مرحله ۳: اصلاح انحراف تصویر با استفاده از کتابخانه
یک DeskewImageRequest را با جریان تصویر بسازید و عملیات deskew را فراخوانی کنید.
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"
۲. بارگذاری 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# نشان داده شدهاند انجام میدهند و به شما امکان میدهند عملکرد را در هر محیطی که میتواند اسکریپتهای شل را اجرا کند، یکپارچه کنید.
برای پارامترهای اضافی و فرمتهای پاسخ، به مستندات رسمی API مراجعه کنید.
نتیجهگیری
پیادهسازی جستجوی معکوس تصویر و اصلاح چرخش تصویر در C# بهسادگی با Aspose.CAD Cloud SDK for .NET امکانپذیر است. این کتابخانه پیشپردازش تصویر را بر عهده دارد، در حالی که Bing Visual Search قابلیتهای قدرتمند جستجوی معکوس را فراهم میکند. با دنبال کردن مراحل فوق میتوانید یک خط لوله جستجوی بصری قوی بسازید که ورودیهای کجشده را پیش از پرسوجو اصلاح میکند. بهخاطر داشته باشید برای استفاده در محیط تولید، یک لایسنس معتبر دریافت کنید؛ جزئیات قیمتگذاری در صفحه محصول موجود است و میتوانید یک لایسنس موقت از صفحه لایسنس موقت دریافت کنید. با داشتن کد و مثالهای cURL، آمادهاید تا این قابلیت را در برنامههای خود ادغام کنید.
سوالات متداول
-
جستجوی معکوس تصویر و اصلاح چرخش تصویر در یک برنامه C# چه هدفی دارد؟
این امکان را میدهد که جهت تصاویر بارگذاریشده بهصورت خودکار اصلاح شود و سپس با استفاده از سرویس جستجوی خارجی، موارد بصری مشابه پیدا شوند، که تجربه کاربری و دقت جستجو را بهبود میبخشد. -
آیا میتوانم کتابخانه را با فرمتهای تصویری دیگری به جز PNG استفاده کنم؟
بله، کتابخانه فرمتهای رایستری رایج مانند JPG و BMP را پشتیبانی میکند. فقط پسوند فایل را در کد تغییر دهید. -
آیا برای اجرای این کد نیاز به میزبانی سرویسهای دیگری دارم؟
خیر، Aspose.CAD Cloud SDK for .NET یک کتابخانه مبتنی بر ابر است، بنابراین تمام پردازشها بر روی سرورهای Aspose انجام میشود. شما فقط به اتصال اینترنت و اعتبارنامههای معتبر نیاز دارید. -
چگونه میتوانم دستههای بزرگ تصویر را بهصورت کارآمد مدیریت کنم؟
تصاویر را بهصورت ناهمزمان پردازش کنید، نتایج deskewed را cache کنید و توکن دسترسی یکسان را برای چندین فراخوانی API دوباره استفاده کنید. این کار تاخیر و هزینهٔ API را کاهش میدهد.