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
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"
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
Buat kamus untuk parameter permintaan pencarian. Tambahkan istilah pencarian Anda ke parameter
q
. Atur parameterlicense
kepublic
untuk mencari gambar di domain publik. AturimageType
kephoto
untuk hanya mencari foto.params = {"q": search_term, "license": "public", "imageType": "photo"}
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 bidangthumbnailUrl
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
Buat gambar baru dengan empat kolom dan empat baris menggunakan pustaka matplotlib.
Lakukan perulangan baris dan kolom gambar, lalu gunakan metode
Image.open()
pustaka PIL untuk menambahkan gambar mini ke setiap ruang.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"
}]
}