In this tutorial we will explore how to download image from URL using Python.

Table of Contents


Introduction

Working with images in Python became a very popular topic in the recent years. The tasks and automations range from similar image processing to more advanced projects like text extraction.

The training and testing images are usually either available locally or are downloaded from different websites.

Using Python we can automate downloading images from different URLs and Webpages.

To continue following this tutorial we will need the following Python library: requests.

Requests is a simple Python library that allows you to send HTTP requests.

If you don’t have it installed, please open “Command Prompt” (on Windows) and install it using the following code:


pip install requests

Download image from URL using Python

In this section we will learn how to download an image from URL using Python.

Here, we will assume you have the URL of the specific image (and not just a webpage).


As the first step, we will import the required dependency and define a function we will use to download images, which will have 3 inputs:

  1. url – URL of the specific image
  2. file_name – name for the saved image
  3. headers – the dictionary of HTTP Headers that will be sent with the request

import requests


def download_image(url, file_name, headers):

Now we can send a GET request to the URL along with the headers, which will return a Response (a server’s response to an HTTP request):


import requests


def download_image(url, file_name, headers):

    #Send GET request
    response = requests.get(url, headers=headers)

If the HTTP request has been successfully completed, we should receive Response code 200 (you can learn more about response codes here).

We are going to check if the response code is 200, and if it is, then we will save the image (which is the content of the request), otherwise we will print out the response code:


import requests


def download_image(url, file_name, headers):

    # Send GET request
    response = requests.get(url, headers=headers)

    # Save the image
    if response.status_code == 200:
        with open(file_name, "wb") as f:
            f.write(response.content)
    else:
        print(response.status_code)

The function to download an image from URL is ready and now we just need to define the url, file_name, and headers, and then run the code.

For example, in one of the previous tutorials, we used some sample images, and you can find one of them here.

The URL looks like this:

https://pyshark.com/wp-content/uploads/2022/05/sampletext1-ocr-539x450.png

You can see that it has the .png extension, meaning that this is a URL to a specific image.

We will save this image as ‘image1.png’.

For the headers we are only using the User-Agent request header which lets the servers identify the application of the requesting user agent (a computer program representing a person, like a browser or an app accessing the Webpage).


import requests


def download_image(url, file_name, headers):

    # Send GET request
    response = requests.get(url, headers=headers)

    # Save the image
    if response.status_code == 200:
        with open(file_name, "wb") as f:
            f.write(response.content)
    else:
        print(response.status_code)


if __name__ == "__main__":

    # Define HTTP Headers
    headers = {
        "User-Agent": "Chrome/51.0.2704.103",
    }

    # Define URL of an image
    url = "https://pyshark.com/wp-content/uploads/2022/05/sampletext1-ocr-539x450.png"

    # Define image file name
    file_name = "image1.png"

    # Download image
    download_image(url, file_name, headers)

Run the code and you should see image1.png created in the same directory as the main.py file with the code:

sample text for OCR

Conclusion

In this article we explored how to download images from URL and Webpages using Python.

Feel free to leave comments below if you have any questions or have suggestions for some edits and check out more of my Python Programming tutorials.