foto dublikatë

Gjeni imazhe të dyfishta duke përdorur Java Cloud SDK

Truri ynë i përkushtohet përpunimit vizual dhe dashuria jonë për imazhet qëndron në njohjen dhe aftësinë tonë për t’i kushtuar vëmendje. Imazhet janë në gjendje të tërheqin lehtësisht vëmendjen tonë dhe shumë pajisje, duke përfshirë kamerat dixhitale të telefonave celularë, skanerët etj. prodhojnë një sasi të madhe imazhesh. Më tej, imazhet kanë algoritme të ndryshme kompresimi dhe imazhet raster janë shumë të zakonshme mes tyre, sepse ato konsumojnë më pak hapësirë ruajtëse. Por megjithatë, me kalimin e kohës, ne përfundojmë duke krijuar foto të dyfishta, imazhe të tepërta etj. Ne kemi një bollëk aplikacionesh që ofrojnë aftësi për të gjetur imazhe të dyfishta, duke përfshirë gjetësin e fotove të dyfishta. Në rast se keni imazhe të ruajtura në fotot e Google, mund të provoni të përdorni gjetësin e kopjimit të fotografive të Google, të instaloni gjetësin e fotove të kopjuara Windows 10 ose gjetësin e fotove të kopjuara mac (në varësi të sistemit tuaj operativ). Sidoqoftë, në këtë artikull, ne do të hedhim dritë se si të zhvillojmë një gjetës të mrekullueshëm të fotove të kopjuara duke përdorur REST API i cili mund të përdoret në çdo platformë.

API për përpunimin e imazhit

Një shumëllojshmëri aplikacionesh janë të disponueshme për përpunimin e imazhit që ofrojnë veçori për të krijuar, modifikuar dhe manipuluar skedarët e imazhit. Ato ofrojnë gjithashtu aftësi duke përfshirë kërkimin e imazheve bazuar në teknikat e kërkimit të kundërt të imazhit ose në ndonjë algoritëm tjetër. Megjithatë, nëse jeni të interesuar të keni zgjidhje programore të bazuara në REST API bazuar në kërkimin e kundërt të imazhit, atëherë Aspose.Imaging Cloud është zgjedhja e sigurt. Motori i tij i fuqishëm i kërkimit i ndihmon zhvilluesit të shtojnë funksionet e kërkimit të kundërt të imazhit në aplikacionin e tyre në çdo platformë pa probleme. Mund të filloni edhe operacionin e krahasimit të imazheve për të gjetur foto dublikatë midis disa imazheve të tjera. Si rezultat i këtij operacioni, ju merrni listën e imazheve më të ngjashme në përputhje me kushtet e mëposhtme:

  • Shkalla e ngjashmërisë
  • Pragu minimal i ngjashmërisë
  • Algoritmi i krahasimit

Tani, në mënyrë që të kemi aftësi të ngjashme të përpunimit të imazhit dhe gjetjes së fotove të kopjuara brenda aplikacionit Java, duhet të përdorim Aspose.Imaging Cloud SDK për Java pasi është një mbështjellës rreth Cloud API. Pra, hapi tjetër është të shtoni referencën e tij në projektin java duke përfshirë informacionin e mëposhtëm në pom.xml të projektit të llojit të ndërtimit të maven.

<repositories> 
    <repository>
        <id>aspose-cloud</id>
        <name>artifact.aspose-cloud-releases</name>
        <url>http://artifact.aspose.cloud/repo</url>
    </repository>   
</repositories>

<dependencies>
    <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-imaging-cloud</artifactId>
        <version>22.4</version>
    </dependency>
</dependencies>

Tani nëse nuk keni krijuar një llogari në Aspose Cloud Dashboard, mund të regjistroheni për një provë falas përmes një adrese të vlefshme emaili. Tani identifikohuni duke përdorur llogarinë e krijuar rishtazi dhe kërkoni/krijoni ID-në e Klientit dhe Sekretin e Klientit në Paneli i Cloud. Këto detaje kërkohen për qëllime vërtetimi në seksionet e mëposhtme.

Gjeni imazhe të dyfishta duke përdorur Java

Kërkimi i kundërt i imazhit është një teknikë që ju ndihmon të kërkoni imazhe vizualisht të ngjashme bazuar në imazhin tuaj të mostrës. Më poshtë janë dhënë rastet më të zakonshme të përdorimit për këtë veçori:

Kërkoni për imazhe të kopjuara dhe hiqni dublikatat Kërkoni për përmbajtje imazhe të ngjashme Kërkoni për përmbajtje të papërshtatshme Kërkoni për imazhe të nënshkruara dixhitale

API-ja jonë aktualisht mbështet kërkimin e imazheve të bazuara në përmbajtje, kërkimin e imazheve të kopjuara, kërkimin e imazheve sipas etiketave të regjistruara me porosi, krahasimin e imazheve dhe zbulimin e ngjashmërisë dhe operacionet e nxjerrjes së veçorive të imazhit. Tani në këtë seksion, ne do të diskutojmë detajet se si të gjeni imazhe të kopjuara duke përdorur teknikën e imazhit të kundërt. Tani për të përmbushur këtë kërkesë, ne përdorim algoritmin AKAZE për zbulimin e veçorive dhe algoritmin RandomBinaryTree për përputhjen e veçorive në shembull. Ne do të ndjekim këto hapa për të gjetur imazhet e kopjuara:

  • Ngarko imazhe në hapësirën ruajtëse në renë kompjuterike
  • Krijo kontekstin e kërkimit
  • Ekstraktimi i veçorive të imazhit
  • Gjeni imazhe të dyfishta

Ngarko imazhe në hapësirën ruajtëse në renë kompjuterike

Ju lutemi, përdorni fragmentin e mëposhtëm të kodit për të ngarkuar skedarë imazhi nga disku lokal në hapësirën ruajtëse në renë kompjuterike

  • Së pari, krijoni një objekt të ImagingApi duke ofruar ClientID dhe Client
  • Së dyti, lexoni të gjithë skedarët e imazhit nga drejtoria e specifikuar
  • Filtro vetëm skedarët e imazheve dhe shtojini ato në listën e filtruar
  • Ngarko imazhet në ruajtjen e resë kompjuterike duke përdorur metodën uploadFile(…) ndërsa merr si argument objektin UploadFileRequest
// Merrni ClientID dhe ClientSecret nga https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";

// krijoni një objekt imazherie
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);

File directory = new File("/Users/");
//Merrni të gjithë skedarët nga dosja
File[] allFiles = directory.listFiles();
if (allFiles == null || allFiles.length == 0) {
    throw new RuntimeException("No files present in the directory: " + directory.getAbsolutePath());
}
			 
//Vendosni shtesat e kërkuara të imazhit këtu.
List<String> supportedImageExtensions = Arrays.asList("jpg", "png", "gif", "webp");
			 
int counter =0;
//Filtro vetëm skedarët e imazheve
List<File> acceptedImages = new ArrayList<>();
for (File file : allFiles) {
    //Analizoni shtesën e skedarit
    String fileExtension = file.getName().substring(file.getName().lastIndexOf(".") + 1);
    //Kontrolloni nëse shtesa është e listuar në Extensionet e mbështetura Image
    if (supportedImageExtensions.stream().anyMatch(fileExtension::equalsIgnoreCase)) {
        //Shtoni imazhin në listën e filtruar
        acceptedImages.add(file);
			    
    // ngarkoni prezantimin e parë në PowerPoint
    byte[] bytes = Files.readAllBytes(file.toPath());
	
    // krijoni kërkesë për ngarkim skedari
    UploadFileRequest request = new UploadFileRequest(acceptedImages.get(counter).getName(),bytes,null);
    // ngarkoni skedarin e imazhit në ruajtjen e cloud
    imageApi.uploadFile(request);
    // rrit numrin e skedarëve
    counter+=1;
    }
}

Krijo kontekstin e kërkimit

  • Së pari duhet të specifikojmë algoritmin e zbulimit të veçorive si akaze
  • Së dyti, specifikoni algoritmin për përputhjen e veçorive si randomBinaryTree
  • Së treti, krijoni kërkesën për kërkimin e imazhit duke përdorur objektin CreateImageSearchRequest
  • Tani krijoni statusin e krijimit të kontekstit të kërkimit përmes metodës createImageSearch(…).
// specifikoni algoritmin për zbulimin e veçorive
String detector = "akaze";
// specifikoni algoritmin për përputhjen e veçorive
String matchingAlgorithm = "randomBinaryTree";

String folder = null; // File will be saved at the root of the storage
String storage = null; // We are using default Cloud Storage

// Krijo kërkesë për kërkimin e imazhit
CreateImageSearchRequest createSearchContextRequest = new CreateImageSearchRequest(detector,matchingAlgorithm, folder, storage);
// krijoni statusin e kontekstit të kërkimit 
SearchContextStatus status = imageApi.createImageSearch(createSearchContextRequest);
			  
// merrni ID-në e statusit të kontekstit të kërkimit
String searchContextId = status.getId();

Ekstraktimi i veçorive të imazhit

Tani është koha për të nxjerrë veçoritë e imazheve dhe për t’i shtuar ato në kontekstin e kërkimit.

// Ekstraktoni veçoritë e imazheve dhe shtojini ato në kontekstin e kërkimit
for (File file : allFiles) 
{
    CreateImageFeaturesRequest request = new CreateImageFeaturesRequest(searchContextId, null, null, "internal", null,null);
		imageApi.createImageFeatures(request);
}

Gjeni imazhe të dyfishta

  • Specifikoni vlerën e pragut të ngjashmërisë
  • Së dyti, krijoni grup imazhi dublikatë duke përdorur objektin ImageDuplicatesSet
  • Tani përsëritni listën e imazheve të kopjuara dhe gjeni ngjashmërinë e imazhit duke përdorur metodën getSimilarity(…)
// specifikoni vlerën e pragut të ngjashmërisë
Double similarityThreshold = 90.0;
			    
// krijoni një grup imazhi të kopjuar
ImageDuplicatesSet result = imageApi.findImageDuplicates(
    new FindImageDuplicatesRequest(status.getId(), similarityThreshold, folder, storage));

// printoni numërimin e imazheve të kopjuara
System.out.println("Duplicates Set Count: " + result.getDuplicates().size());
for (ImageDuplicates duplicates : result.getDuplicates())
{
    System.out.println("Duplicates:");
		for (SearchResult duplicate : duplicates.getDuplicateImages())
		{
		    System.out.println("ImageName: " + duplicate.getImageId() +
			      ", Similarity: " + duplicate.getSimilarity());
    }
}

Gjeni foto dublikatë duke përdorur komandat cURL

Në këtë seksion, ne do të shfrytëzojmë përdorimin e komandave cURL për të hyrë në API-të REST mbi terminalin e linjës së komandës. Tani si një parakusht, ne duhet së pari të gjenerojmë një shenjë hyrjeje JWT (bazuar në kredencialet e klientit) ndërsa ekzekutojmë komandën e mëposhtme.

curl -v "https://api.aspose.cloud/connect/token" \
-X POST \
-d "grant_type=client_credentials&client_id=bb959721-5780-4be6-be35-ff5c3a6aa4a2&client_secret=4d84d5f6584160cbd91dba1fe145db14" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json"

Ky hap parashikon që të gjitha imazhet të ngarkohen në ruajtjen e resë kompjuterike dhe tani ne duhet të krijojmë ID-në e kontekstit të kërkimit përmes thirrjes CreateImageSearch API. Ju lutemi ekzekutoni komandën e mëposhtme

curl -v -X POST "https://api.aspose.cloud/v3.0/imaging/ai/imageSearch/create?detector=akaze&matchingAlgorithm=randomBinaryTree" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>"

Trupi i reagimit

{
  "id": "0b9ac539-07fb-462a-91cb-8a8d5069ba4d",
  "searchStatus": "Idle"
}

Ju lutemi, ekzekutoni komandën e mëposhtme për të gjetur dublikatat e imazhit duke përdorur thirrjen e FindImageDuplicates API. Në komandën e mëposhtme, përdoret ID e kontekstit të kërkimit të krijuar më sipër.

curl -v -X GET "https://api.aspose.cloud/v3.0/imaging/ai/imageSearch/da150333-57b4-4371-b13d-4889578ce2bd/findDuplicates?similarityThreshold=90" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>"

konkluzioni

Në këtë artikull, ne kemi mësuar rreth detajeve se si të gjeni imazhe të kopjuara duke përdorur Java Cloud SDK. Në mënyrë të ngjashme, ne kemi mësuar se si komandat cURL mund të shërbejnë si një gjetës i fotove të kopjuara. Në rast se ju duhet të provoni këto API brenda shfletuesit, ju lutemi provoni të përdorni Swagger API Reference. Në mënyrë të ngjashme, ne rekomandojmë shumë të eksploroni Product documentation për të mësuar veçori të tjera emocionuese që ofrohen nga kjo API. Gjithashtu, ju lutemi vini re se të gjitha Cloud SDK-të tona janë publikuar nën licencën MIT, kështu që mund të merrni parasysh shkarkimin e kodit burimor të plotë nga GitHub dhe ta modifikoni atë sipas kërkesave tuaja. Në rast të ndonjë problemi, mund të konsideroni të na kontaktoni për një zgjidhje të shpejtë nëpërmjet [forumit të mbështetjes së produktit] falas.

Artikuj të ngjashëm

Ju lutemi vizitoni lidhjet e mëposhtme për të mësuar më shumë rreth: