Aracılığıyla paylaş


Hızlı Başlangıç: Bing Resim Arama REST API'sini ve Python'ı kullanarak görüntü arama

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 Resim Arama API'sine arama isteği göndermeyi öğrenmek için bu hızlı başlangıcı kullanın. Bu Python uygulaması API'ye bir arama sorgusu gönderir ve sonuçlarda ilk görüntünün URL'sini görüntüler. Bu uygulama Python'da yazılmış olsa da, API çoğu programlama diliyle uyumlu bir RESTful web hizmetidir.

Önkoşullar

Uygulamayı oluşturma ve başlatma

  1. Sık kullandığınız IDE veya düzenleyicide yeni bir Python dosyası oluşturun ve aşağıdaki modülleri içeri aktarın. Abonelik anahtarınız, arama uç noktanız ve arama teriminiz için bir değişken oluşturun. içinsearch_url, aşağıdaki kodda genel uç noktayı kullanabilir veya kaynağınız için Azure portal görüntülenen özel alt etki alanı uç noktasını kullanabilirsiniz.

    import requests
    import matplotlib.pyplot as plt
    from PIL import Image
    from io import BytesIO
    
    subscription_key = "your-subscription-key"
    search_url = "https://api.cognitive.microsoft.com/bing/v7.0/images/search"
    search_term = "puppies"
    
  2. Bir sözlük oluşturup anahtarı değer olarak ekleyerek abonelik anahtarınızı Ocp-Apim-Subscription-Key üst bilgisine ekleyin.

    headers = {"Ocp-Apim-Subscription-Key" : subscription_key}
    

Arama isteği oluşturma ve gönderme

  1. Arama isteğinin parametreleri için bir sözlük oluşturun. Arama teriminizi parametresine q ekleyin. license Genel etki alanındaki görüntüleri aramak için parametresini public olarak ayarlayın. imageType photo yalnızca fotoğrafları aramak için olarak ayarlayın.

    params  = {"q": search_term, "license": "public", "imageType": "photo"}
    
  2. requests Bing Resim Arama API'sini çağırmak için kitaplığı kullanın. üst bilginizi ve parametrelerinizi isteğe ekleyin ve yanıtı JSON nesnesi olarak döndürin. Yanıtın alanından birkaç küçük resim görüntüsünün URL'lerini thumbnailUrl alın.

    response = requests.get(search_url, headers=headers, params=params)
    response.raise_for_status()
    search_results = response.json()
    thumbnail_urls = [img["thumbnailUrl"] for img in search_results["value"][:16]]
    

Yanıtı görüntüleme

  1. matplotlib kitaplığını kullanarak dört sütun ve dört satır içeren yeni bir şekil oluşturun.

  2. Şeklin satır ve sütunlarını yineleyin ve her alana bir resim küçük resmi eklemek için PIL kitaplığının Image.open() yöntemini kullanın.

  3. Şekli çizmek ve görüntüleri görüntülemek için kullanın plt.show() .

    f, axes = plt.subplots(4, 4)
    for i in range(4):
        for j in range(4):
            image_data = requests.get(thumbnail_urls[i+4*j])
            image_data.raise_for_status()
            image = Image.open(BytesIO(image_data.content))        
            axes[i][j].imshow(image)
            axes[i][j].axis("off")
    plt.show()
    

Örnek JSON yanıtı

Bing Resim Arama API'sinden yanıtlar JSON olarak döndürülür. Bu örnek yanıt, tek bir sonuç göstermek için kısaltıldı.

{
"_type":"Images",
"instrumentation":{
    "_type":"ResponseInstrumentation"
},
"readLink":"images\/search?q=tropical ocean",
"webSearchUrl":"https:\/\/www.bing.com\/images\/search?q=tropical ocean&FORM=OIIARP",
"totalEstimatedMatches":842,
"nextOffset":47,
"value":[
    {
        "webSearchUrl":"https:\/\/www.bing.com\/images\/search?view=detailv2&FORM=OIIRPO&q=tropical+ocean&id=8607ACDACB243BDEA7E1EF78127DA931E680E3A5&simid=608027248313960152",
        "name":"My Life in the Ocean | The greatest WordPress.com site in ...",
        "thumbnailUrl":"https:\/\/tse3.mm.bing.net\/th?id=OIP.fmwSKKmKpmZtJiBDps1kLAHaEo&pid=Api",
        "datePublished":"2017-11-03T08:51:00.0000000Z",
        "contentUrl":"https:\/\/mylifeintheocean.files.wordpress.com\/2012\/11\/tropical-ocean-wallpaper-1920x12003.jpg",
        "hostPageUrl":"https:\/\/mylifeintheocean.wordpress.com\/",
        "contentSize":"897388 B",
        "encodingFormat":"jpeg",
        "hostPageDisplayUrl":"https:\/\/mylifeintheocean.wordpress.com",
        "width":1920,
        "height":1200,
        "thumbnail":{
        "width":474,
        "height":296
        },
        "imageInsightsToken":"ccid_fmwSKKmK*mid_8607ACDACB243BDEA7E1EF78127DA931E680E3A5*simid_608027248313960152*thid_OIP.fmwSKKmKpmZtJiBDps1kLAHaEo",
        "insightsMetadata":{
        "recipeSourcesCount":0,
        "bestRepresentativeQuery":{
            "text":"Tropical Beaches Desktop Wallpaper",
            "displayText":"Tropical Beaches Desktop Wallpaper",
            "webSearchUrl":"https:\/\/www.bing.com\/images\/search?q=Tropical+Beaches+Desktop+Wallpaper&id=8607ACDACB243BDEA7E1EF78127DA931E680E3A5&FORM=IDBQDM"
        },
        "pagesIncludingCount":115,
        "availableSizesCount":44
        },
        "imageId":"8607ACDACB243BDEA7E1EF78127DA931E680E3A5",
        "accentColor":"0050B2"
    }]
}

Sonraki adımlar