foto duplikat

Temokake Gambar Duplikat nggunakake Java Cloud SDK

Otak kita dedikasi dhewe kanggo pangolahan visual lan katresnan kita kanggo gambar dumunung ing kognisi lan kemampuan kanggo mbayar manungsa waé. Gambar kasebut bisa narik kawigatosan kita kanthi gampang lan akeh piranti kalebu kamera digital ponsel, pemindai lan liya-liyane ngasilake gambar sing akeh. Kajaba iku, gambar duwe algoritma kompresi sing beda-beda lan gambar raster umum banget ing antarane, amarga nggunakake ruang panyimpenan sing kurang. Nanging isih, karo wacana wektu, kita mungkasi munggah nggawe duplikat foto, gambar keluwih etc. Kita duwe plethora aplikasi nawakake kemampuan kanggo golek duplikat gambar kalebu duplikat gambar finder. Yen sampeyan duwe gambar sing disimpen ing foto Google, sampeyan bisa nyoba nggunakake Google Photo Duplikat Finder, nginstal duplikat Photo Finder windows 10 utawa duplikat Photo Finder Mac (gumantung saka sistem operasi sampeyan). Nanging ing artikel iki, kita bakal nerangake carane nggawe panemu foto duplikat sing apik tenan nggunakake REST API sing bisa digunakake ing platform apa wae.

API Pangolahan Gambar

Macem-macem aplikasi kasedhiya kanggo pangolahan gambar sing nawakake fitur kanggo nggawe, ngowahi lan ngapusi file gambar. Dheweke uga nyedhiyakake kapabilitas kalebu telusuran gambar adhedhasar teknik telusuran gambar mbalikke utawa algoritma liyane. Nanging, yen sampeyan kasengsem duwe REST API adhedhasar solusi programmatic adhedhasar telusuran gambar mbalikke, banjur Aspose.Imaging Cloud iku pilihan pesti. Mesin telusur sing kuat mbantu para pangembang nambah fitur telusuran gambar sing mbalikke ing aplikasi ing platform apa wae kanthi lancar. Sampeyan bisa uga miwiti operasi mbandhingake gambar kanggo nemokake duplikat foto ing antarane sawetara gambar liyane. Minangka asil saka operasi iki, sampeyan entuk dhaptar gambar sing paling padha miturut kahanan ing ngisor iki:

  • Derajat mirip
  • Ambang minimal mirip
  • Algoritma perbandingan

Saiki supaya bisa ngolah gambar sing padha lan kemampuan panemu gambar duplikat ing aplikasi Java, kita kudu nggunakake Aspose.Imaging Cloud SDK for Java minangka bungkus ing Cloud API. Dadi langkah sabanjure yaiku nambah referensi ing proyek java kanthi nyakup informasi ing pom.xml saka proyek jinis mbangun 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>

Saiki yen sampeyan durung nggawe akun liwat Aspose Cloud Dashboard, sampeyan bisa ndhaptar Uji Coba Gratis liwat alamat email sing bener. Saiki mlebu nggunakake akun sing mentas digawe lan goleki / gawe ID Klien lan Rahasia Klien ing Cloud Dashboard. Rincian kasebut dibutuhake kanggo tujuan otentikasi ing bagean ing ngisor iki.

Golek Gambar Duplikat nggunakake Jawa

Panelusuran Gambar Reverse minangka teknik sing mbantu sampeyan nggoleki gambar sing padha kanthi visual adhedhasar gambar sampel sampeyan. Ing ngisor iki minangka kasus panggunaan sing paling umum kanggo fitur iki:

Telusuri gambar duplikat lan copot duplikat Telusuri isi gambar sing padha Telusuri konten sing ora cocog Telusuri gambar sing ditandatangani kanthi digital

API kita saiki ndhukung telusuran gambar adhedhasar konten, telusuran gambar duplikat, telusuran gambar kanthi tag kadhaptar khusus, perbandingan gambar lan deteksi mirip lan operasi ekstraksi fitur Gambar. Saiki ing bagean iki, kita bakal ngrembug rincian babagan carane nemokake gambar duplikat nggunakake teknik gambar mbalikke. Saiki kanggo ngrampungake syarat iki, kita nggunakake algoritma AKAZE kanggo deteksi fitur lan algoritma RandomBinaryTree kanggo cocog fitur ing conto. Kita bakal tindakake langkah iki kanggo nemokake gambar duplikat:

  • Upload Gambar menyang Cloud Storage
  • Nggawe Konteks Panelusuran
  • Extract Fitur Gambar
  • Golek Gambar Duplikat

Upload Gambar menyang Cloud Storage

Gunakake potongan kode ing ngisor iki kanggo ngunggah file gambar saka drive lokal menyang panyimpenan maya

  • Kaping pisanan, nggawe obyek ImagingApi nalika nyedhiyakake ClientID lan Klien
  • Kapindho, maca kabeh file gambar saka direktori sing ditemtokake
  • Nyaring mung file gambar lan tambahake menyang dhaptar sing disaring
  • Unggah gambar menyang panyimpenan Cloud nggunakake metode uploadFile(…) nalika njupuk obyek UploadFileRequest minangka argumen
// Entuk ClientID lan ClientSecret saka https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";

// nggawe obyek Imaging
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);

File directory = new File("/Users/");
//Entuk kabeh file saka folder kasebut
File[] allFiles = directory.listFiles();
if (allFiles == null || allFiles.length == 0) {
    throw new RuntimeException("No files present in the directory: " + directory.getAbsolutePath());
}
			 
//Setel ekstensi gambar sing dibutuhake ing kene.
List<String> supportedImageExtensions = Arrays.asList("jpg", "png", "gif", "webp");
			 
int counter =0;
//Nyaring mung file gambar
List<File> acceptedImages = new ArrayList<>();
for (File file : allFiles) {
    //Parse ekstensi file
    String fileExtension = file.getName().substring(file.getName().lastIndexOf(".") + 1);
    //Priksa manawa ekstensi kasebut kadhaptar ing ImageExtensions sing didhukung
    if (supportedImageExtensions.stream().anyMatch(fileExtension::equalsIgnoreCase)) {
        //Tambah gambar menyang dhaptar sing disaring
        acceptedImages.add(file);
			    
    // mbukak presentation PowerPoint pisanan
    byte[] bytes = Files.readAllBytes(file.toPath());
	
    // nggawe panjalukan upload file
    UploadFileRequest request = new UploadFileRequest(acceptedImages.get(counter).getName(),bytes,null);
    // upload file gambar menyang panyimpenan maya
    imageApi.uploadFile(request);
    // nambah file counter
    counter+=1;
    }
}

Nggawe Konteks Panelusuran

  • Pisanan kita kudu nemtokake algoritma deteksi fitur minangka akaze
  • Kapindho, nemtokake algoritma kanggo cocog fitur minangka randomBinaryTree
  • Katelu, nggawe Panyuwunan Panelusuran Gambar nggunakake obyek CreateImageSearchRequest
  • Saiki gawe status konteks telusuran liwat metode createImageSearch(…).
// nemtokake algoritma kanggo deteksi fitur
String detector = "akaze";
// nemtokake algoritma kanggo cocog fitur
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

// Nggawe Panjaluk Panelusuran Gambar
CreateImageSearchRequest createSearchContextRequest = new CreateImageSearchRequest(detector,matchingAlgorithm, folder, storage);
// nggawe status konteks panelusuran 
SearchContextStatus status = imageApi.createImageSearch(createSearchContextRequest);
			  
// entuk ID Status saka Konteks telusuran
String searchContextId = status.getId();

Extract Fitur Gambar

Saiki wektune kanggo ngekstrak fitur gambar lan ditambahake menyang konteks telusuran.

// Ekstrak fitur gambar lan tambahake menyang konteks telusuran
for (File file : allFiles) 
{
    CreateImageFeaturesRequest request = new CreateImageFeaturesRequest(searchContextId, null, null, "internal", null,null);
		imageApi.createImageFeatures(request);
}

Golek Gambar Duplikat

  • Nemtokake nilai ambang sing padha
  • Kapindho, nggawe set gambar duplikat nggunakake obyek ImageDuplicatesSet
  • Saiki maneh liwat dhaptar gambar duplikat lan temokake persamaan gambar nggunakake metode getSimilarity(…).
// nemtokake nilai ambang mirip
Double similarityThreshold = 90.0;
			    
// nggawe set gambar duplikat
ImageDuplicatesSet result = imageApi.findImageDuplicates(
    new FindImageDuplicatesRequest(status.getId(), similarityThreshold, folder, storage));

// print gambar duplikat count
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());
    }
}

Temokake Duplikat Foto nggunakake Perintah cURL

Ing bagean iki, kita bakal nggunakake perintah cURL kanggo ngakses REST API liwat terminal baris perintah. Saiki minangka prasyarat, kita kudu nggawe token akses JWT dhisik (adhedhasar kredensial klien) nalika nglakokake perintah ing ngisor iki.

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"

Langkah iki ngarepake yen kabeh gambar diunggah menyang panyimpenan maya lan saiki kita kudu nggawe ID konteks panelusuran liwat telpon CreateImageSearch API. Mangga nglakokaké printah ing ngisor iki

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>"

Badan tanggapan

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

Mangga nglakokake printah ing ngisor iki kanggo nemokake duplikat Gambar nggunakake telpon FindImageDuplicates API. Ing printah ing ngisor iki, ID konteks panelusuran sing digawe ing ndhuwur digunakake.

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>"

Kesimpulan

Ing artikel iki, kita wis sinau babagan rincian babagan nemokake gambar duplikat nggunakake Java Cloud SDK. Kajaba iku, kita wis sinau kepiye perintah cURL bisa dadi panemu gambar duplikat. Yen sampeyan kudu nyoba API kasebut ing browser, coba gunakake Referensi API swagger. Kajaba iku, kita banget nyaranake njelajah Dokumentasi produk kanggo sinau fitur menarik liyane sing ditawakake API iki. Uga, elinga yen kabeh Cloud SDK kita diterbitake ing lisensi MIT, supaya sampeyan bisa nimbang ngundhuh kode sumber lengkap saka GitHub lan ngowahi miturut kabutuhan sampeyan. Yen ana masalah, sampeyan bisa nimbang nyedhaki kita kanggo resolusi cepet liwat [forum dhukungan produk] gratis 9.

Artikel sing gegandhengan

Mangga bukak link ing ngisor iki kanggo mangerteni sing luwih lengkap babagan: