Mūsu smadzenes velta sevi vizuālai apstrādei, un mūsu mīlestība pret attēliem ir saistīta ar mūsu izziņu un spēju pievērst uzmanību. Attēli var viegli piesaistīt mūsu uzmanību, un daudzas ierīces, tostarp mobilie tālruņi, digitālās kameras, skeneri utt., rada lielu attēlu daudzumu. Turklāt attēliem ir dažādi saspiešanas algoritmi, un starp tiem ir ļoti izplatīti rastra attēli, jo tie patērē mazāk vietas. Tomēr laika gaitā mēs izveidojam fotoattēlu dublikātus, liekus attēlus utt. Mums ir daudz lietojumprogrammu, kas piedāvā iespēju atrast attēlu dublikātus, tostarp dublikātu meklētāju. Ja pakalpojumā Google fotoattēli ir saglabāti attēli, varat mēģināt izmantot Google fotoattēlu dublikātu meklētāju, instalēt dublikātu fotoattēlu meklētāju operētājsistēmā Windows 10 vai fotoattēlu meklētāja dublikātu mac (atkarībā no operētājsistēmas). Tomēr šajā rakstā mēs izskaidrosim, kā izveidot lielisku fotoattēlu dublikātu meklētāju, izmantojot REST API, ko var izmantot jebkurā platformā.
- Attēlu apstrādes API
- Atrodiet attēlu dublikātus, izmantojot Java
- Atrodiet fotoattēla dublikātu, izmantojot cURL komandas
Attēlu apstrādes API
Attēlu apstrādei ir pieejamas dažādas lietojumprogrammas, kas piedāvā funkcijas, lai izveidotu, rediģētu un apstrādātu attēlu failus. Tie nodrošina arī iespējas, tostarp attēlu meklēšanu, pamatojoties uz reversās attēlu meklēšanas metodēm vai jebkuru citu algoritmu. Tomēr, ja jūs interesē programmatiskais risinājums, kura pamatā ir REST API, pamatojoties uz apgriezto attēlu meklēšanu, Aspose.Imaging Cloud ir noteikta izvēle. Tā jaudīgā meklētājprogramma palīdz izstrādātājiem nemanāmi pievienot reversās attēlu meklēšanas funkcijas savām lietojumprogrammām jebkurā platformā. Varat pat sākt attēlu salīdzināšanas darbību, lai starp vairākiem citiem attēliem atrastu fotoattēlu dublikātu. Šīs darbības rezultātā tiek iegūts vislīdzīgāko attēlu saraksts saskaņā ar šādiem nosacījumiem:
- Līdzības pakāpe
- Minimālais līdzības slieksnis
- Salīdzināšanas algoritms
Tagad, lai Java lietojumprogrammā būtu līdzīgas attēlu apstrādes un dublikātu attēlu meklētāja iespējas, mums ir jāizmanto Aspose.Imaging Cloud SDK for Java, jo tas ir Cloud API iesaiņojums. Tātad nākamais solis ir pievienot atsauci java projektā, iekļaujot šādu informāciju maven build tipa projekta failā pom.xml.
<repositories>
<repository>
<id>aspose-cloud</id>
<name>artifact.aspose-cloud-releases</name>
<url>https://artifact.aspose.cloud/repo</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-imaging-cloud</artifactId>
<version>22.4</version>
</dependency>
</dependencies>
Tagad, ja neesat izveidojis kontu, izmantojot Aspose Cloud Dashboard, varat reģistrēties bezmaksas izmēģinājuma versijai, izmantojot derīgu e-pasta adresi. Tagad piesakieties, izmantojot jaunizveidoto kontu, un vietnē Cloud Dashboard atrodiet/izveidojiet klienta ID un klienta noslēpumu. Šī informācija ir nepieciešama autentifikācijas nolūkos nākamajās sadaļās.
Atrodiet attēlu dublikātus, izmantojot Java
Reversā attēlu meklēšana ir metode, kas palīdz meklēt vizuāli līdzīgus attēlus, pamatojoties uz jūsu attēla paraugu. Tālāk ir norādīti šīs funkcijas visizplatītākie lietošanas gadījumi.
Meklējiet attēla dublikātu un noņemiet dublikātus Meklēt satura līdzīgus attēlus Meklējiet nepiemērotu saturu Meklēt digitāli parakstītus attēlus
Mūsu API pašlaik atbalsta uz saturu balstītu attēlu meklēšanu, attēlu dublikātu meklēšanu, attēlu meklēšanu pēc pielāgotiem reģistrētiem tagiem, attēlu salīdzināšanu un līdzības noteikšanu un attēlu funkciju ekstrakcijas darbības. Tagad šajā sadaļā mēs apspriedīsim sīkāku informāciju par to, kā atrast attēlu dublikātus, izmantojot apgrieztā attēla paņēmienu. Tagad, lai izpildītu šo prasību, mēs izmantojam AKAZE algoritmu pazīmju noteikšanai un RandomBinaryTree algoritmu funkciju saskaņošanai piemērā. Mēs veiksim šīs darbības, lai atrastu attēlu dublikātus:
- Augšupielādējiet attēlus mākoņkrātuvē
- Izveidojiet meklēšanas kontekstu
- Izvilkšanas attēla funkcijas
- Atrodiet attēlu dublikātus
Augšupielādējiet attēlus mākoņkrātuvē
Lūdzu, izmantojiet šo koda fragmentu, lai augšupielādētu attēlu failus no vietējā diska mākoņkrātuvē
- Pirmkārt, izveidojiet ImagingApi objektu, vienlaikus nodrošinot ClientID un Client
- Otrkārt, izlasiet visus attēlu failus no norādītā direktorija
- Filtrējiet tikai attēlu failus un pievienojiet tos filtrētajam sarakstam
- Augšupielādējiet attēlus mākoņkrātuvē, izmantojot metodi uploadFile(…), vienlaikus izmantojot objektu UploadFileRequest kā argumentu
// Iegūstiet ClientID un ClientSecret no https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";
// izveidot attēlu objektu
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);
File directory = new File("/Users/");
//Iegūstiet visus failus no mapes
File[] allFiles = directory.listFiles();
if (allFiles == null || allFiles.length == 0) {
throw new RuntimeException("No files present in the directory: " + directory.getAbsolutePath());
}
//Šeit iestatiet nepieciešamos attēlu paplašinājumus.
List<String> supportedImageExtensions = Arrays.asList("jpg", "png", "gif", "webp");
int counter =0;
//Filtrējiet tikai attēlu failus
List<File> acceptedImages = new ArrayList<>();
for (File file : allFiles) {
//Parsējiet faila paplašinājumu
String fileExtension = file.getName().substring(file.getName().lastIndexOf(".") + 1);
//Pārbaudiet, vai paplašinājums ir iekļauts atbalstīto attēlu paplašinājumos
if (supportedImageExtensions.stream().anyMatch(fileExtension::equalsIgnoreCase)) {
//Pievienojiet attēlu filtrētajam sarakstam
acceptedImages.add(file);
// ielādējiet pirmo PowerPoint prezentāciju
byte[] bytes = Files.readAllBytes(file.toPath());
// izveidot failu augšupielādes pieprasījumu
UploadFileRequest request = new UploadFileRequest(acceptedImages.get(counter).getName(),bytes,null);
// augšupielādējiet attēla failu mākoņa krātuvē
imageApi.uploadFile(request);
// palielināt failu skaitītāju
counter+=1;
}
}
Izveidojiet meklēšanas kontekstu
- Vispirms mums ir jānorāda funkciju noteikšanas algoritms kā akaze
- Otrkārt, norādiet funkciju saskaņošanas algoritmu kā randomBinaryTree
- Treškārt, izveidojiet attēlu meklēšanas pieprasījumu, izmantojot objektu CreateImageSearchRequest
- Tagad izveidojiet meklēšanas konteksta statusu, izmantojot metodi createImageSearch(…).
// norādiet pazīmju noteikšanas algoritmu
String detector = "akaze";
// norādiet funkciju saskaņošanas algoritmu
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
// Izveidojiet attēlu meklēšanas pieprasījumu
CreateImageSearchRequest createSearchContextRequest = new CreateImageSearchRequest(detector,matchingAlgorithm, folder, storage);
// izveidot meklēšanas konteksta statusu
SearchContextStatus status = imageApi.createImageSearch(createSearchContextRequest);
// iegūstiet meklēšanas konteksta statusa ID
String searchContextId = status.getId();
Izvilkt attēla funkcijas
Tagad ir pienācis laiks iegūt attēlu funkcijas un pievienot tās meklēšanas kontekstam.
// Izņemiet attēlu funkcijas un pievienojiet tos meklēšanas kontekstam
for (File file : allFiles)
{
CreateImageFeaturesRequest request = new CreateImageFeaturesRequest(searchContextId, null, null, "internal", null,null);
imageApi.createImageFeatures(request);
}
Atrodiet dublētus attēlus
- Norādiet līdzības sliekšņa vērtību
- Otrkārt, izveidojiet dublikātu attēlu kopu, izmantojot ImageDuplicatesSet objektu
- Tagad atkārtojiet attēlu dublikātu sarakstu un atrodiet attēla līdzību, izmantojot metodi getSimilarity (…).
// norādiet līdzības sliekšņa vērtību
Double similarityThreshold = 90.0;
// izveidot dublikātu attēlu kopu
ImageDuplicatesSet result = imageApi.findImageDuplicates(
new FindImageDuplicatesRequest(status.getId(), similarityThreshold, folder, storage));
// izdrukājiet attēlu dublikātu skaitu
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());
}
}
Atrodiet fotoattēla dublikātu, izmantojot cURL komandas
Šajā sadaļā mēs izmantosim cURL komandu izmantošanu, lai piekļūtu REST API, izmantojot komandrindas termināli. Tagad kā priekšnoteikums mums vispirms ir jāģenerē JWT piekļuves marķieris (pamatojoties uz klienta akreditācijas datiem), vienlaikus izpildot šo komandu.
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"
Šajā darbībā ir paredzēts, ka visi attēli tiks augšupielādēti mākoņa krātuvē, un tagad mums ir jāizveido meklēšanas konteksta ID, izmantojot CreateImageSearch API zvanu. Lūdzu, izpildiet šādu komandu
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>"
Atbildes korpuss
{
"id": "0b9ac539-07fb-462a-91cb-8a8d5069ba4d",
"searchStatus": "Idle"
}
Lūdzu, izpildiet šo komandu, lai atrastu attēla dublikātus, izmantojot FindImageDuplicates API zvanu. Nākamajā komandā tiek izmantots iepriekš ģenerētais meklēšanas konteksta ID.
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>"
Secinājums
Šajā rakstā mēs uzzinājām par to, kā atrast attēlu dublikātus, izmantojot Java Cloud SDK. Tāpat mēs esam iemācījušies, kā cURL komandas var kalpot kā attēla dublikātu meklētājs. Ja jums ir jāizmēģina šīs API pārlūkprogrammā, lūdzu, mēģiniet izmantot swagger API atsauci. Tāpat mēs ļoti iesakām izpētīt Produkta dokumentāciju, lai uzzinātu par citām aizraujošām funkcijām, ko piedāvā šī API. Lūdzu, ņemiet vērā arī to, ka visi mūsu mākoņa SDK ir publicēti saskaņā ar MIT licenci, tāpēc varat apsvērt iespēju lejupielādēt visu avota kodu no GitHub un pārveidot to atbilstoši savām prasībām. Ja rodas problēmas, varat sazināties ar mums, lai ātri atrisinātu to, izmantojot bezmaksas produktu atbalsta forumu.
Saistītie raksti
Lūdzu, apmeklējiet šīs saites, lai uzzinātu vairāk par: