API обратного поиска изображений

Мы рады сообщить вам о недавно введенных функциях в Aspose.Imaging Cloud API. Теперь он поддерживает источник изображений, основанный на веб-сайте, для обратного поиска изображений. Функция исправления наклона изображения также делает API лучшим среди аналогов. Мы постоянно работаем и совершенствуемся, чтобы предложить вам лучшие решения.

Обратный поиск изображений полезен для поиска дубликатов или схожих изображений. Он также может помочь в мониторинге непристойного или графического контента. Вы также можете противодействовать нарушениям авторских прав или подделке товарных знаков, ища цифровые подписанные изображения с помощью обратного поиска. Более того, коррекция наклона изображений - еще одна функция, которая добавляет ценность к Aspose.Imaging Cloud API. Она также имеет значение для отсканированных PDF-документов, в которых часто существуют наклоненные изображения. Такие PDF-документы часто преобразуются в поисковые PDF-документы, где результаты могут быть улучшены за счет коррекции наклона изображений. Давайте разберем эти функции ниже.

Обратный поиск изображений с использованием Aspose.Imaging Cloud SDK для Python

Несколько SDK доступны для связи с Aspose.Imaging Cloud API. SDK обрабатывают все мелкие детали, чтобы вы могли без проблем продолжить выполнение ваших требований. SDK включают .NET, Java, Python, PHP, Ruby, Android и Node.js. Здесь мы будем работать с примером на Python:

Для начала вам нужно будет бесплатное sign up на Aspose.Cloud. Установите Python 2.7 или более позднюю версию, а затем добавьте следующий PyPi package в ваш requirements.txt.

aspose-imaging-cloud>=20.1

Теперь импортируйте зависимости следующим образом:

import aspose-imaging-cloud

Теперь вы можете использовать приведенный ниже код на Python для вызова API и тестирования функции:

    def search_image_from_web_source(self):
        """Finds the similar images from the URL source"""
        print('Finds similar images from URL:')

        similarity_threshold = 30.0
        max_count = 3
        folder = ImagingAiBase.CLOUD_PATH  # Folder with image to process
        storage = None  # We are using default Cloud Storage

        # Добавьте изображения с веб-сайта в контекст поиска.
        image_source_url = urllib.quote_plus('https://www.f1news.ru/interview/hamilton/140909.shtml')
        self._imaging_api.create_web_site_image_features(
            requests.CreateWebSiteImageFeaturesRequest(self._search_context_id, image_source_url, folder, storage))

        self._wait_idle(self._search_context_id)

        # Скачайте изображение с веб-сайта
        image_data = req.get('https://cdn.f1ne.ws/userfiles/hamilton/140909.jpg')
        path = os.path.abspath(os.path.join(ImagingAiBase.OUTPUT_FOLDER, 'WebSearchSample.jpg'))
        with open(path, "wb") as f:
            f.write(image_data.content)

        # Измените размер загруженного изображения, чтобы продемонстрировать возможности поисковой системы.
        resized_image = self._imaging_api.create_resized_image(requests.CreateResizedImageRequest(
            path, 600, 400, "jpg", storage=storage))

        # Загрузить изображение в облако
        image_name = 'ReverseSearch.jpg'
        self._imaging_api.upload_file(requests.UploadFileRequest(ImagingAiBase.CLOUD_PATH + "/" + image_name,
                                                                 resized_image, storage))

        # Найдите похожие изображения в контексте поиска
        find_response = self._imaging_api.find_similar_images(
            requests.FindSimilarImagesRequest(self._search_context_id, similarity_threshold, max_count,
                                              image_id=ImagingAiBase.CLOUD_PATH + "/" + image_name,
                                              folder=folder, storage=storage))

        print('Similar images found: ' + str(len(find_response.results)))
        print('Similar image id: ' + find_response.results[0].image_id)
        print('Similarity: ' + str(find_response.results[0].similarity))

Веб-сайтовый источник изображений для обратного поиска изображений хорошо объяснен в этом примере. Он включает дополнительный шаг изменения размера изображения, чтобы продемонстрировать эффективность API. Размеры изображения могут отличаться, но API будет обеспечивать надежные и точные результаты. Ниже приведен скриншот вывода:

Как вы можете заметить, количество похожих изображений, URL и процент схожести отображаются параметрами в ответе API.

Изменение угла наклона изображения с использованием Aspose.Imaging Cloud SDK для .NET

Изображения содержат много информации, и обработка изображений в настоящее время имеет большое значение. Очень распространённый случай использования – это наклонённые изображения в отсканированных PDF-документах или часто в изображениях с камер мобильных телефонов. Aspose.Imaging Cloud API теперь включает функцию выпрямления изображений. Вы можете выпрямить изображения в форматах BMP, GIF, JPEG, JPEG2000, PSD, TIFF, WEBP и PNG. Рассмотрим пример на .NET для выпрямления TIFF-изображения.

using System;
using System.IO;
using Aspose.Imaging.Cloud.Sdk.Api;
using Aspose.Imaging.Cloud.Sdk.Model.Requests;

namespace AsposeImagingCloudSdkExamples
{
    /// <summary>
    /// Пример выпрямления изображения.
    /// </summary>
    /// <seealso cref=\"AsposeImagingCloudSDKExamples.ImagingBase\" />
    class DeskewImage : ImagingBase
    {
        /// <summary>
        /// Инициализирует новый экземпляр класса <see cref=\"DeskewImage\"/>.
        /// </summary>
        /// <param name=\"imagingApi\">Имaging API.</param>
        public DeskewImage(ImagingApi imagingApi) : base(imagingApi)
        {
            PrintHeader("Deskew image example:");
        }

        /// <summary>
        /// Получает имя файла с изображением примера.
        /// </summary>
        /// <value>
        /// Название файла примера изображения.
        /// </value>
        /// <remarks>
        /// Форматы ввода могут быть одним из следующих:
        ///BMP, GIF, JPEG, JPEG2000, PSD, TIFF, WEBP, PNG
        /// </remarks>
        protected override string SampleImageFileName => "Sample_05_Scan1_SkewToLeft.tif";

        private const string SaveImageFormat = "tif";

        /// <summary>
        /// Поворачивает изображение из облачного хранилища.
        /// </summary>
        public void DeskewImageFromStorage()
        {
            Console.WriteLine("Deskew the image from cloud storage");

            UploadSampleImageToCloud();

            bool resizeProportionally = true;
            string bkColor = "white";
            string folder = CloudPath; // Input file is saved at the Examples folder in the storage
            string storage = null; // We are using default Cloud Storage

            var request = new DeskewImageRequest(SampleImageFileName, resizeProportionally, bkColor, folder, storage);

            Console.WriteLine($"Call DeskewImage with params: resizeProportionally:{resizeProportionally}, bkColor:{bkColor}");

            using (Stream updatedImage = this.ImagingApi.DeskewImage(request))
            {
                SaveUpdatedSampleImageToOutput(updatedImage, false, SaveImageFormat);
            }

            Console.WriteLine();
        }

        /// <summary>
        /// Исправьте наклон существующего изображения и загрузите обновленное изображение в облачное хранилище.
        /// </summary>
        public void DeskewImageAndUploadToStorage()
        {
            Console.WriteLine("Deskews the image and upload to cloud storage");

            UploadSampleImageToCloud();

            bool resizeProportionally = true;
            string bkColor = null;
            string folder = CloudPath; // Input file is saved at the Examples folder in the storage
            string storage = null; // We are using default Cloud Storage

            var request = new DeskewImageRequest(SampleImageFileName, resizeProportionally, bkColor, folder, storage);

            Console.WriteLine($"Call DeskewImage with params: resizeProportionally:{resizeProportionally}, bkColor:{bkColor}");

            using (Stream updatedImage = this.ImagingApi.DeskewImage(request))
            {
                UploadImageToCloud(GetModifiedSampleImageFileName(false, SaveImageFormat), updatedImage);
            }

            Console.WriteLine();
        }

        /// <summary>
        /// Выравнивает изображение. Данные изображения передаются в потоке запроса.
        /// </summary>
        public void CreateDeskewedImageFromRequestBody()
        {
            Console.WriteLine("Deskews the image from request body");

            using (FileStream inputImageStream = File.OpenRead(Path.Combine(ExampleImagesFolder, SampleImageFileName)))
            {
                bool resizeProportionally = true;
                string bkColor = "white";
                string storage = null; // We are using default Cloud Storage
                string outPath = null; // Path to updated file (if this is empty, response contains streamed image)

                var request = new CreateDeskewedImageRequest(inputImageStream, resizeProportionally, bkColor, outPath, storage);

                Console.WriteLine($"Call DeskewImage with params: resizeProportionally:{resizeProportionally}, bkColor:{bkColor}");

                using (Stream updatedImage = this.ImagingApi.CreateDeskewedImage(request))
                {
                    SaveUpdatedSampleImageToOutput(updatedImage, true, SaveImageFormat);
                }
            }

            Console.WriteLine();
        }
    }
}

Этот пример загружает образец изображения в Cloud Storage, исправляет искажения и загружает обновленное изображение в Cloud Storage. Ниже представлены скриншоты входных и выходных TIFF изображений.

Входное изображение TIFF

Вывод TIFF изображения (выровненного)

Aspose.Imaging Cloud SDK для Ruby

Еще одним важным дополнением в линейке SDK является то, что мы опубликовали Aspose.Imaging Cloud SDK для Ruby. Он позволяет интегрировать надежные функции обработки изображений в ваши Ruby-приложения.

Мы призываем вас попробовать эти эффективные функции API и поделиться с нами своим опытом. Дайте нам знать, если у вас есть какие-либо предложения или вопросы. Мы с нетерпением ждем вашего ответа через Free Support Forums.

Связанная статья:

Представляем Aspose.Imaging Cloud V3