Java’da ters resim araması yapmak, geliştiricilerin anahtar kelimelere veya meta verilere güvenmek yerine görsel içeriklerine göre bir koleksiyondaki benzer resimleri bulmasını sağlar. Bu özellik, özellikle resim alma, içerik yönetim sistemleri ve dijital varlık yönetimi gibi uygulamalarda değerlidir. Arama kitaplığından yararlanarak, Java geliştiricileri eşleşen resimleri hızla bulmak için ters resim arama yeteneklerini kolayca uygulayabilirler. Bu makalede, Java kullanarak ters resim araması nasıl yapılır konusunu ele alacağız ve başlamanıza yardımcı olacak bir kod örneği sunacağız. Bu işlevsellik, PNG, JPEG ve ZIP arşivleri dahil olmak üzere çeşitli resim biçimlerini işlemek için özellikle yararlıdır ve farklı platformlar ve dosya türleri arasında sorunsuz uyumluluk sağlar.
Java kullanarak Ters Görüntü Araması Gerçekleştirme Adımları
- Ters görüntü arama işlevini etkinleştirmek için GroupDocs.Search for Java kitaplığını projenize entegre edin
- Dizinin depolanacağı klasörü belirterek bir Index nesnesi başlatın
- Kapsayıcı öğe görüntüleri, gömülü görüntüler ve bağımsız görüntüler için dizin oluşturmaya izin vermek üzere görüntü Dizinleme Seçeneklerini yapılandırın
- Yapılandırılmış görüntü dizinleme seçenekleriyle belgeleri dizin klasörüne ekleyin
- Karma farklar, maksimum sonuç sayısı ve aranacak belgeler için filtreler gibi ImageSearchOptions’ı ayarlayın
- SearchImage.create metoduyla resim dosyasının yolunu tanımlayarak arama için bir referans resim oluşturun
- Referans görseli ve Index.search aracılığıyla tanımlanmış arama seçeneklerini kullanarak dizin içinde resim aramasını gerçekleştirin
- Arama sonuçları arasında gezinin ve bulunan her görüntünün ayrıntılarını görüntüleyin
Bu işlevi uygulamak için süreç, görüntüleri ilişkili meta verileriyle birlikte depolayan bir dizin oluşturmakla başlar. IndexingOptions
sınıfı, gömülü görüntüler, kapsayıcı öğe görüntüleri ve bağımsız görüntüler gibi çeşitli görüntü türleri için dizinlemeyi etkinleştirmek için kullanılır. Dizinlemeden sonra, bir referans görüntü belirtmenize ve dizinlenmiş belgelerde benzer eşleşmeleri bulmanıza olanak tanıyan SearchImage
sınıfı kullanılarak arama yürütülebilir. ImageSearchOptions
sınıfı, sonuç sayısına sınırlamalar koyma ve hangi tür belgelerde arama yapılacağını belirtme dahil olmak üzere arama için daha fazla özelleştirme sağlar. Bu yöntem, Java uygulamalarında içerik tabanlı etkili görüntü alma olanağı sağlar. Aşağıda, bu özellikleri projenize nasıl uygulayacağınızı gösteren ters görüntü araması için Java kodu bulunmaktadır.
Java kullanarak Ters Resim Araması Gerçekleştirmek İçin Kod
import com.groupdocs.search.Index; | |
import com.groupdocs.search.SearchDocumentFilter; | |
import com.groupdocs.search.common.SearchImage; | |
import com.groupdocs.search.licenses.License; | |
import com.groupdocs.search.options.ImageSearchOptions; | |
import com.groupdocs.search.options.IndexingOptions; | |
import com.groupdocs.search.results.FoundImageFrame; | |
import com.groupdocs.search.results.ImageSearchResult; | |
public class PerformReverseImageSearchusingJava { | |
public static void main(String[] args) throws Exception { | |
// Apply the license to remove the restrictions | |
// imposed by the Search library | |
License license = new License(); | |
license.setLicense("GroupDocs.Search.lic"); | |
// The path where the index will be stored | |
String indexFolder = "c:\\MyIndex\\"; | |
// The folder containing the documents you want to search | |
String documentsFolder = "c:\\MyDocuments\\"; | |
// Creating an index | |
Index index = new Index(indexFolder); | |
// Setting the image indexing options | |
IndexingOptions indexingOptions = new IndexingOptions(); | |
indexingOptions.getImageIndexingOptions().setEnabledForContainerItemImages(true); | |
indexingOptions.getImageIndexingOptions().setEnabledForEmbeddedImages(true); | |
indexingOptions.getImageIndexingOptions().setEnabledForSeparateImages(true); | |
// Indexing documents in a document folder | |
index.add(documentsFolder, indexingOptions); | |
// Setting the image search options | |
ImageSearchOptions imageSearchOptions = new ImageSearchOptions(); | |
imageSearchOptions.setHashDifferences(10); | |
imageSearchOptions.setMaxResultCount(10000); | |
imageSearchOptions.setSearchDocumentFilter(SearchDocumentFilter | |
.createFileExtension(".zip", ".png", ".jpg")); | |
// Creating a reference image for search | |
SearchImage searchImage = SearchImage.create("c:\\MyDocuments\\image.png"); | |
// Searching in the index | |
ImageSearchResult result = index.search(searchImage, imageSearchOptions); | |
System.out.print("Images found: " + result.getImageCount()); | |
for (int i = 0; i < result.getImageCount(); i++) { | |
FoundImageFrame image = result.getFoundImage(i); | |
System.out.print(image.getDocumentInfo().toString()); | |
} | |
} | |
} |
Java kullanarak içerik tabanlı görüntü alma gerçekleştirmek, benzer görüntüleri içeriğe göre etkili bir şekilde bulmak için önemli bir özelliktir ve uygulamaların masaüstü yazılımlarından bulut tabanlı hizmetlere kadar çeşitli ortamlarda görüntüleri hızlı ve doğru bir şekilde bulmasını sağlar. Görüntüleri dizinleme ve arama için Arama kitaplığının dahil edilmesi, platform bağımsızlığını garanti eder ve Windows, macOS ve Linux ile uyumlu hale getirirken, aynı zamanda büyük görüntü veri kümelerini yönetmek için ölçeklenebilir. Geliştiriciler, bu özelliklerden yararlanarak kullanıcı deneyimlerini iyileştiren ve çeşitli platformlar ve uygulamalar genelinde içerik yönetimini optimize eden güçlü görüntü arama sistemleri oluşturabilirler. Bu yaklaşım yalnızca arama verimliliğini artırmakla kalmaz, aynı zamanda kapsamlı görüntü kitaplıklarının işlenmesini de basitleştirerek mevcut iş akışlarına sorunsuz bir şekilde entegre edilmesini sağlar.
Daha önce, Java kullanarak düzenli ifade aramaları yürütmeye ilişkin ayrıntılı bir kılavuz yayınladık. Tam adım adım talimatlar için Java kullanarak düzenli ifade araması‘in nasıl gerçekleştirileceğine ilişkin derinlemesine makalemizi inceleyin.