Reverse image search API

Vi er glade for at informere dig om de nyintroducerede funktioner i Aspose.Imaging Cloud API. Nu understøtter det webbaserede billede kilder til omvendt billedsøgning. Billedet skævhedsfunktion gør også API’et uovertruffen. Vi arbejder løbende og forbedrer os for at tilbyde dig de bedste løsninger muligt.

Reverse image search is useful for finding duplicate or similar images. It can also help to monitor obscene or graphic content. You can also counter copyrights violations or trademark counterfeit by searching digitally signed images with the reverse search. Moreover, image deskewing is another feature that adds value to Aspose.Imaging Cloud API. It is also relevant to scanned PDF documents where skewed images often exist. Such PDF documents are frequently converted to searchable PDF documents where the results can be improved by deskewing the images. Let us dissect these features below.

Reverse Image Search using Aspose.Imaging Cloud SDK for Python

Flere SDK’er er tilgængelige for at kommunikere med Aspose.Imaging Cloud API. SDK’erne tager sig af alle små detaljer, så du kan fortsætte med dine krav uden besvær. SDK’erne inkluderer .NET, Java, Python, PHP, Ruby, Android og Node.js. Her vil vi arbejde med et Python-eksempel:

Først og fremmest skal du have en gratis sign up hos Aspose.Cloud. Installer Python 2.7 eller senere og tilføj derefter følgende PyPi pakke til din requirements.txt.

aspose-imaging-cloud>=20.1

Nu skal du importere afhængighederne som nedenfor:

import aspose-imaging-cloud

Nu kan du bruge nedenstående Python-kode til at kalde API’erne og teste funktionen:

    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

        # Tilføj billeder fra hjemmesiden til søgekonteksten
        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)

        # Download billedet fra hjemmesiden
        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)

        # Ændr størrelse på det downloader billede for at demonstrere søgemaskinens kapaciteter
        resized_image = self._imaging_api.create_resized_image(requests.CreateResizedImageRequest(
            path, 600, 400, "jpg", storage=storage))

        # Upload billede til skyen
        image_name = 'ReverseSearch.jpg'
        self._imaging_api.upload_file(requests.UploadFileRequest(ImagingAiBase.CLOUD_PATH + "/" + image_name,
                                                                 resized_image, storage))

        # Find similar images in the search context
        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))

Den webbaserede billedkilde til omvendt billedsøgning er velbeskrevet i dette eksempel. Det inkluderer et ekstra trin til at ændre størrelsen på billedet for at demonstrere effektiviteten af API’en. Billeddimensioner kan variere, men API’en vil producere pålidelige og nøjagtige resultater. Følgende er skærmbilledet af output:

Som du kan bemærke, vises antallet af lignende billeder, URL’en og lighedsprocenten af ​​parametrene i API-svaret.

Billede Deskewing ved hjælp af Aspose.Imaging Cloud SDK til .NET

Images contain a lot of information and image processing has assumed a lot of importance these days. A very common use case is skewed images in scanned PDF documents or often in the images from mobile phone cameras. Aspose.Imaging Cloud API now includes the feature of deskewing the images. You can deskew the images in BMP, GIF, JPEG, JPEG2000, PSD, TIFF, WEBP, and PNG format. Let’s consider a .NET example for deskewing a TIFF image.

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

namespace AsposeImagingCloudSdkExamples
{
    /// <summary>
    /// Deskew image eksempel.
    /// </summary>
    /// <seealso cref=\"AsposeImagingCloudSDKExamples.ImagingBase\" />
    class DeskewImage : ImagingBase
    {
        /// <summary>
        /// Initialiserer en ny instans af <see cref=\"DeskewImage\"/> klassen.
        /// </summary>
        /// <param name="imagingApi">Imaging API'en.</param>
        public DeskewImage(ImagingApi imagingApi) : base(imagingApi)
        {
            PrintHeader("Deskew image example:");
        }

        /// <summary>
        /// Henter navnet på eksempelbilledfilen.
        /// </summary>
        /// <value>
        /// Navnet på eksempel billedefilen.
        /// </value>
        /// <remarks>
        /// Inputformater kan være en af følgende:
        /// BMP, GIF, JPEG, JPEG2000, PSD, TIFF, WEBP, PNG
        /// </remarks>
        protected override string SampleImageFileName => "Sample_05_Scan1_SkewToLeft.tif";

        private const string SaveImageFormat = "tif";

        /// <summary>
        /// Deskew en billede fra en cloud storage.
        /// </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>
        /// Retuscher et eksisterende billede, og upload det opdaterede billede til en cloud-lagring.
        /// </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>
        /// Justerer et billede. Billeddata sendes i en anmodningsstrøm.
        /// </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();
        }
    }
}

Dette eksempel uploader et prøvebillede til Cloud Storage, deskew det og uploader det opdaterede billede til Cloud Storage. Nedenfor er skærmbillederne af input- og output TIFF-billeder.

Input TIFF-billede

Output TIFF-billede (deskewed)

Aspose.Imaging Cloud SDK for Ruby

En anden vigtig tilføjelse i SDK’ernes lineup er, at vi har offentliggjort Aspose.Imaging Cloud SDK for Ruby. Det lader dig integrere robuste billedbehandlingsfunktioner i dine Ruby-applikationer.

Vi opfordrer dig til at prøve disse effektive funktioner i API’en og dele dine oplevelser med os. Lad os vide, hvis du har nogen forslag eller spørgsmål. Vi ser frem til at høre fra dig via Free Support Forums.

Relateret artikel:

Introducing Aspose.Imaging Cloud V3