Search for image using Google Custom Search API and resize & crop the image afterwords
Project description
Google Images Search
Installation
Before you continue you need to setup your Google developers account and project:
-
Visit https://console.developers.google.com and among all of the Google APIs enable "Custom Search API" for your project.
-
Visit https://cse.google.com/cse/all and in the web form where you create/edit your custom search engine enable "Image search" option and for "Sites to search" option select "Search the entire web but emphasize included sites".
After setting up you Google developers account and project you should have your developers API key and project CX.
Install package from pypi.org:
> pip install Google-Images-Search
CLI usage
# without environment variables:
> gimages -k __your_dev_api_key__ -c __your_project_cx__ search -q puppies
# with environment variables:
> export GCS_DEVELOPER_KEY=__your_dev_api_key__
> export GCS_CX=__your_project_cx__
>
> gimages search -q puppies
# search only (no download and resize):
> gimages search -q puppies
# search and download only (no resize):
> gimages search -q puppies -d /path/on/your/drive/where/images/should/be/downloaded
# search, download and resize:
> gimages search -q puppies -d /path/ -w 500 -h 500
Programmatic usage
from google_images_search import GoogleImagesSearch
# if you don't enter api key and cx, the package will try to search
# them from environment variables GCS_DEVELOPER_KEY and GCS_CX
gis = GoogleImagesSearch('your_dev_api_key', 'your_project_cx')
# example: GoogleImagesSearch('ABcDeFGhiJKLmnopqweRty5asdfghGfdSaS4abC', '012345678987654321012:abcde_fghij')
# define search params:
_search_params = {
'q': '...',
'num': 10,
'safe': 'high|medium|off',
'fileType': 'jpg|gif|png',
'imgType': 'clipart|face|lineart|news|photo',
'imgSize': 'huge|icon|large|medium|small|xlarge|xxlarge',
'imgDominantColor': 'black|blue|brown|gray|green|pink|purple|teal|white|yellow'
}
# this will only search for images:
gis.search(search_params=_search_params)
# this will search and download:
gis.search(search_params=_search_params, path_to_dir='/path/')
# this will search, download and resize:
gis.search(search_params=_search_params, path_to_dir='/path/', width=500, height=500)
# search first, then download and resize afterwards:
gis.search(search_params=_search_params)
for image in gis.results():
image.download('/path/')
image.resize(500, 500)
# take next 10 images from Google images search:
# (this will take images from 11 to 20)
gis.next_page()
for image in gis.results():
...
# or if you want to do it manually just use "start" search parameter:
# (this will take images from 21 to 30)
_search_params = {
...
'num': 10,
'start': 21,
...
}
Inserting custom progressbar function
from google_images_search import GoogleImagesSearch
def my_progressbar(url, progress):
print(url + ' ' + progress + '%')
gis = GoogleImagesSearch(
'your_dev_api_key', 'your_project_cx', progressbar_fn=my_progressbar
)
...
Saving to a BytesIO object
from google_images_search import GoogleImagesSearch
from io import BytesIO
from PIL import Image
# in this case we're using PIL to keep the BytesIO as an image object
# this way we don't have to wait for disk save / write times
# the image is simply kept in memory
# this example should display 3 pictures of puppies!
gis = GoogleImagesSearch('your_dev_api_key', 'your_project_cx')
my_bytes_io = BytesIO()
gis.search({'q': 'puppies', 'num': 3})
for image in gis.results():
# here we tell the BytesIO object to go back to address 0
my_bytes_io.seek(0)
# take raw image data
raw_image_data = image.get_raw_data()
# this function writes the raw image data to the object
image.copy_to(my_bytes_io, raw_image_data)
# or without the raw data which will be automatically taken
# inside the copy_to() method
image.copy_to(my_bytes_io)
# we go back to address 0 again so PIL can read it from start to finish
my_bytes_io.seek(0)
# create a temporary image object
temp_img = Image.open(my_bytes_io)
# show it in the default system photo viewer
temp_img.show()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for Google Images Search-1.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | c1f99cc289a1258a981d83d91b81f0394006888d04f1a68658e0b520a9a9e86e |
|
MD5 | 37b76184cc13f9dbad54db6414aae2ff |
|
BLAKE2b-256 | 2a3225a0015f42aaa7cd6305163561b5324c574e2f82241dae8245ec9f552320 |
Hashes for Google_Images_Search-1.1.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 85eab2d9471c570a292254c901a75ecbb9e92147430e8e4480231d51e3b3613a |
|
MD5 | b28006f120b2aa9b4591d02e310a2491 |
|
BLAKE2b-256 | d78947b3320824b82c7b3b0b42cd9b4063f2f404dc19f02cfbcdc339129492ee |