Bagikan melalui


Mulai cepat: Mencari gambar menggunakan Bing Image Search REST API dan Python

Peringatan

Pada 30 Oktober 2020, API Bing Search dipindahkan dari layanan Azure AI ke layanan Bing Search. Dokumentasi ini disediakan hanya untuk referensi. Untuk dokumentasi terbaru, lihat dokumentasi Bing Search API. Untuk petunjuk tentang cara membuat sumber daya Azure baru untuk pencarian Bing, lihat Membuat sumber daya Pencarian Bing melalui Marketplace Azure.

Gunakan mulai cepat ini untuk mempelajari cara mengirim permintaan pencarian ke Bing Image Search API. Aplikasi Python ini mengirim kueri pencarian ke API, dan menampilkan URL gambar pertama dalam hasil. Meskipun aplikasi ini ditulis dengan Python, API adalah layanan web RESTful yang kompatibel dengan sebagian besar bahasa pemrograman.

Prasyarat

Membuat dan menginisialisasi aplikasi

  1. Buat file Python baru di IDE atau editor favorit Anda, dan impor modul berikut. Buat variabel untuk kunci langganan, titik akhir pencarian, dan istilah pencarian Anda. Untuk search_url, Anda dapat menggunakan titik akhir global dalam kode berikut, atau menggunakan titik akhir subdomain kustom yang ditampilkan di portal Azure untuk sumber daya Anda.

    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. Tambahkan kunci langganan Anda ke header Ocp-Apim-Subscription-Key dengan membuat kamus, dan menambahkan kunci sebagai nilai.

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

Membuat dan mengirim permintaan pencarian

  1. Buat kamus untuk parameter permintaan pencarian. Tambahkan istilah pencarian Anda ke parameter q. Atur parameter license ke public untuk mencari gambar di domain publik. Atur imageType ke photo untuk hanya mencari foto.

    params  = {"q": search_term, "license": "public", "imageType": "photo"}
    
  2. Gunakan pustaka requests untuk memanggil Bing Image Search API. Tambahkan header dan parameter Anda ke permintaan, dan kembalikan respons sebagai objek JSON. Dapatkan URL ke beberapa gambar mini dari bidang thumbnailUrl respons.

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

Menampilkan respons

  1. Buat gambar baru dengan empat kolom dan empat baris menggunakan pustaka matplotlib.

  2. Lakukan perulangan baris dan kolom gambar, lalu gunakan metode Image.open() pustaka PIL untuk menambahkan gambar mini ke setiap ruang.

  3. Gunakan plt.show() untuk menggambar dan menampilkan gambar.

    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()
    

Contoh respons JSON

Respons dari Bing Image Search API ditampilkan sebagai JSON. Respons sampel ini telah dipotong untuk menampilkan satu hasil.

{
"_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"
    }]
}

Langkah berikutnya