API di ricerca inversa delle immagini

Siamo entusiasti di informarvi riguardo alle nuove funzionalità introdotte nell’API Aspose.Imaging Cloud. Ora supporta la sorgente di immagine basata su sito web per la ricerca inversa di immagini. Anche la funzionalità di correzione dell’inclinazione dell’immagine rende l’API senza pari. Stiamo lavorando continuamente e migliorando per offrirvi le migliori soluzioni possibili.

La ricerca inversa delle immagini è utile per trovare immagini duplicate o simili. Può anche aiutare a monitorare contenuti osceni o grafici. Puoi anche contrastare le violazioni di copyright o i marchi contraffatti cercando immagini firmate digitalmente con la ricerca inversa. Inoltre, la correzione dell’inclinazione delle immagini è un’altra funzionalità che aggiunge valore all’API Aspose.Imaging Cloud. È anche pertinente ai documenti PDF scansionati, dove immagini inclinate esistono spesso. Tali documenti PDF vengono frequentemente convertiti in documenti PDF ricercabili, dove i risultati possono essere migliorati correggendo l’inclinazione delle immagini. Analizziamo queste caratteristiche di seguito.

Ricerca inversa delle immagini utilizzando Aspose.Imaging Cloud SDK per Python

Sono disponibili diversi SDK per comunicare con l’API Aspose.Imaging Cloud. Gli SDK si occupano di tutti i dettagli minori in modo da poter procedere con i propri requisiti senza problemi. Gli SDK includono .NET, Java, Python, PHP, Ruby, Android e Node.js. Qui lavoreremo con un esempio in Python:

Prima di tutto, avresti bisogno di una registrazione gratuita sign up su Aspose.Cloud. Installa Python 2.7 o versioni successive e poi aggiungi il seguente pacchetto PyPi al tuo requirements.txt.

aspose-imaging-cloud>=20.1

Ora importa le dipendenze come segue:

import aspose-imaging-cloud

Ora puoi utilizzare il codice Python qui sotto per chiamare le API e testare la funzione:

    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

        # Aggiungi immagini dal sito web al contesto di ricerca
        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)

        # Scarica l'immagine dal sito web
        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)

        # Ridimensiona l'immagine scaricata per dimostrare le capacità del motore di ricerca.
        resized_image = self._imaging_api.create_resized_image(requests.CreateResizedImageRequest(
            path, 600, 400, "jpg", storage=storage))

        # Carica immagine sul cloud
        image_name = 'ReverseSearch.jpg'
        self._imaging_api.upload_file(requests.UploadFileRequest(ImagingAiBase.CLOUD_PATH + "/" + image_name,
                                                                 resized_image, storage))

        # Trova immagini simili nel contesto di ricerca
        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))

La fonte dell’immagine basata sul sito web per la ricerca inversa delle immagini è ben elaborata in questo esempio. Include un passaggio aggiuntivo di ridimensionamento dell’immagine per dimostrare l’efficienza dell’API. Le dimensioni dell’immagine possono variare, ma l’API produrrà risultati affidabili e precisi. Seguono lo screenshot dell’output:

Come puoi notare, il numero di immagini simili, l’URL e la percentuale di similarità sono mostrati dai parametri nella risposta dell’API.

Image Deskewing using Aspose.Imaging Cloud SDK per .NET

Le immagini contengono molte informazioni e l’elaborazione delle immagini ha assunto molta importanza in questi giorni. Un caso d’uso molto comune è rappresentato dalle immagini inclinate nei documenti PDF scansionati o spesso nelle immagini provenienti dalle fotocamere degli smartphone. L’API Aspose.Imaging Cloud ora include la funzione di rettifica delle immagini. Puoi rettificare le immagini nei formati BMP, GIF, JPEG, JPEG2000, PSD, TIFF, WEBP e PNG. Consideriamo un esempio in .NET per la rettifica di un’immagine TIFF.

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

namespace AsposeImagingCloudSdkExamples
{
    /// <summary>
    /// Esempio di deskewing dell'immagine.
    /// </summary>
    /// <seealso cref=\"AsposeImagingCloudSDKExamples.ImagingBase\" />
    class DeskewImage : ImagingBase
    {
        /// <summary>
        /// Inizializza una nuova istanza della classe <see cref=\"DeskewImage\"/>.
        /// </summary>
        /// <param name=\"imagingApi\">L'API di imaging.</param>
        public DeskewImage(ImagingApi imagingApi) : base(imagingApi)
        {
            PrintHeader("Deskew image example:");
        }

        /// <summary>
        /// Ottiene il nome del file immagine di esempio.
        /// </summary>
        /// <value>
        /// Il nome del file immagine di esempio.
        /// </value>
        /// <remarks>
        //I formati di input possono essere uno dei seguenti:
        /// BMP, GIF, JPEG, JPEG2000, PSD, TIFF, WEBP, PNG
        /// </remarks>
        protected override string SampleImageFileName => "Sample_05_Scan1_SkewToLeft.tif";

        private const string SaveImageFormat = "tif";

        /// <summary>
        /// Deskews un'immagine da un'archiviazione cloud.
        /// </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>
        /// Raddrizza un'immagine esistente e carica l'immagine aggiornata su un'archiviazione cloud.
        /// </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>
        /// Deskews un'immagine. I dati dell'immagine vengono passati in un flusso di richiesta.
        /// </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();
        }
    }
}

Questo esempio carica un’immagine campione su Cloud Storage, la corregge e carica l’immagine aggiornata su Cloud Storage. Di seguito sono riportati gli screenshot delle immagini TIFF di input e output.

Input TIFF Image

Output TIFF Image (Deskewed)

Aspose.Imaging Cloud SDK per Ruby

Un’altra importante aggiunta nella linea degli SDK è che abbiamo pubblicato Aspose.Imaging Cloud SDK per Ruby. Ti consente di integrare funzionalità di elaborazione delle immagini robuste nelle tue applicazioni Ruby.

Ti incoraggiamo a provare queste funzionalità efficienti dell’API e a condividere le tue esperienze con noi. Facci sapere se hai suggerimenti o domande. Non vediamo l’ora di ricevere una tua risposta tramite Free Support Forums.

Articolo correlato:

Introducing Aspose.Imaging Cloud V3