Öğretici: Görsel Arama tek sayfalı web uygulaması oluşturma
Uyarı
30 Ekim 2020'de Bing Arama API'leri Azure yapay zeka hizmetlerinden Bing Arama Hizmetlerine taşındı. Bu belgeler yalnızca başvuru için sağlanır. Güncelleştirilmiş belgeler için Bing arama API'sinin belgelerine bakın. Bing araması için yeni Azure kaynakları oluşturma yönergeleri için bkz. Azure Market aracılığıyla Bing Arama kaynağı oluşturma.
Bing Görsel Arama API'si bir görüntü için içgörüler döndürür. Bir görüntüyü karşıya yükleyebilir veya bir resmin URL'sini sağlayabilirsiniz. İçgörüler görsel olarak benzer görüntüler, alışveriş kaynakları, görüntüyü içeren web sayfaları ve daha fazlasıdır. Bing Görsel Arama API'sinin döndürdiği içgörüler, Bing.com/images gösterilen içgörülere benzer.
Bu öğreticide, Bing Resim Arama API'sine yönelik tek sayfalı bir web uygulamasının nasıl genişletilmesi açıklanmaktadır. Bu öğreticiyi görüntülemek veya burada kullanılan kaynak kodunu almak için bkz . Öğretici: Bing Resim Arama API'sine yönelik tek sayfalı uygulama oluşturma.
Bu uygulamanın tam kaynak kodu (Bing Görsel Arama API'sini kullanacak şekilde genişletildikten sonra) GitHub'da kullanılabilir.
Önkoşullar
Azure kaynağı oluşturma
Aşağıdaki Azure kaynaklarından birini oluşturarak Bing Görsel Arama API'sini kullanmaya başlayın:
- Kaynağı silene kadar Azure portal aracılığıyla kullanılabilir.
- Fiyatlandırma katmanını
S9
seçin.
- Kaynağı silene kadar Azure portal aracılığıyla kullanılabilir.
- Birden çok Azure AI hizmeti genelinde uygulamalarınız için aynı anahtarı ve uç noktayı kullanın.
Bing Görsel Arama API'sini çağırma ve yanıtı işleme
Bing Resim Arama öğreticisini düzenleyin ve öğesinin sonuna (ve kapanış </script>
etiketinden <script>
önce) aşağıdaki kodu ekleyin. Aşağıdaki kod API'den gelen bir görsel arama yanıtını işler, sonuçlarda yinelenir ve bunları görüntüler:
function handleVisualSearchResponse(){
if(this.status !== 200){
console.log(this.responseText);
return;
}
let json = this.responseText;
let response = JSON.parse(json);
for (let i =0; i < response.tags.length; i++) {
let tag = response.tags[i];
if (tag.displayName === '') {
for (let j = 0; j < tag.actions.length; j++) {
let action = tag.actions[j];
if (action.actionType === 'VisualSearch') {
let html = '';
for (let k = 0; k < action.data.value.length; k++) {
let item = action.data.value[k];
let height = 120;
let width = Math.max(Math.round(height * item.thumbnail.width / item.thumbnail.height), 120);
html += "<img src='"+ item.thumbnailUrl + "&h=" + height + "&w=" + width + "' height=" + height + " width=" + width + "'>";
}
showDiv("insights", html);
window.scrollTo({top: document.getElementById("insights").getBoundingClientRect().top, behavior: "smooth"});
}
}
}
}
}
Aşağıdaki kod, çağırmak handleVisualSearchResponse()
için bir olay dinleyicisi kullanarak API'ye bir arama isteği gönderir:
function bingVisualSearch(insightsToken){
let visualSearchBaseURL = 'https://api.cognitive.microsoft.com/bing/v7.0/images/visualsearch',
boundary = 'boundary_ABC123DEF456',
startBoundary = '--' + boundary,
endBoundary = '--' + boundary + '--',
newLine = "\r\n",
bodyHeader = 'Content-Disposition: form-data; name="knowledgeRequest"' + newLine + newLine;
let postBody = {
imageInfo: {
imageInsightsToken: insightsToken
}
}
let requestBody = startBoundary + newLine;
requestBody += bodyHeader;
requestBody += JSON.stringify(postBody) + newLine + newLine;
requestBody += endBoundary + newLine;
let request = new XMLHttpRequest();
try {
request.open("POST", visualSearchBaseURL);
}
catch (e) {
renderErrorMessage("Error performing visual search: " + e.message);
}
request.setRequestHeader("Ocp-Apim-Subscription-Key", getSubscriptionKey());
request.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + boundary);
request.addEventListener("load", handleVisualSearchResponse);
request.send(requestBody);
}
İçgörü elde etme belirteci
Nesnesine aşağıdaki kodu searchItemsRenderer
ekleyin. Bu kod, tıklandığında bingVisualSearch
işlevini çağıran bir benzerlerini bulma bağlantısı ekler. işlevi bağımsız imageInsightsToken
değişken olarak alır.
html.push("<a href='javascript:bingVisualSearch(\"" + item.imageInsightsToken + "\");'>find similar</a><br>");
Benzer resimler görüntüleme
Aşağıdaki HTML kodunu 601. satıra ekleyin. Bu işaretleme kodu, Bing Görsel Arama API'sinin sonuçlarını görüntülemek için bir öğe ekler:
<div id="insights">
<h3><a href="#" onclick="return toggleDisplay('_insights')">Similar</a></h3>
<div id="_insights" style="display: none"></div>
</div>
Yeni JavaScript kodu ve HTML öğeleri yerleştirildikten sonra arama sonuçları bir benzerlerini bul bağlantısıyla görüntülenir. Benzerleri bölümünü seçtiğinize benzer görüntülerle doldurmak için bağlantıya tıklayın. Görüntüleri göstermek için Benzerleri bölümünü genişletmeniz gerekebilir.