Ok, so, this is my rudimentary attempt, and probably total overkill.
Update if needed, as this doesn't handle any timeouts, but, I got this working for fun.
Code listed here: https://github.com/JayRizzo/JayRizzoTools/blob/master/pyImageDownloader.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# =============================================================================
# Created Syst: MAC OSX High Sierra 21.5.0 (17G65)
# Created Plat: Python 3.9.5 ('v3.9.5:0a7dcbdb13', 'May  3 2021 13:17:02')
# Created By  : Jeromie Kirchoff
# Created Date: Thu Jun 15 23:31:01 2022 CDT
# Last ModDate: Thu Jun 16 01:41:01 2022 CDT
# =============================================================================
# NOTE: Doesn't work on SVG images at this time.
# I will look into this further: https://stackoverflow.com/a/6599172/1896134
# =============================================================================
import requests                                 # to get image from the web
import shutil                                   # to save it locally
import os                                       # needed
from os.path import exists as filepathexist     # check if file paths exist
from os.path import join                        # joins path for different os
from os.path import expanduser                  # expands current home
from pyuser_agent import UA                     # generates random UserAgent
class ImageDownloader(object):
    """URL ImageDownloader.
    Input : Full Image URL
    Output: Image saved to your ~/Pictures/JayRizzoDL folder.
    """
    def __init__(self, URL: str):
        self.url = URL
        self.headers = {"User-Agent" : UA().random}
        self.currentHome = expanduser('~')
        self.desktop = join(self.currentHome + "/Desktop/")
        self.download = join(self.currentHome + "/Downloads/")
        self.pictures = join(self.currentHome + "/Pictures/JayRizzoDL/")
        self.outfile = ""
        self.filename = ""
        self.response = ""
        self.rawstream = ""
        self.createdfilepath = ""
        self.imgFileName = ""
        # Check if the JayRizzoDL exists in the pictures folder.
        # if it doesn't exist create it.
        if not filepathexist(self.pictures):
            os.mkdir(self.pictures)
        self.main()
    def getFileNameFromURL(self, URL: str):
        """Parse the URL for the name after the last forward slash."""
        NewFileName = self.url.strip().split('/')[-1].strip()
        return NewFileName
    def getResponse(self, URL: str):
        """Try streaming the URL for the raw data."""
        self.response = requests.get(self.url, headers=self.headers, stream=True)
        return self.response
    def gocreateFile(self, name: str, response):
        """Try creating the file with the raw data in a custom folder."""
        self.outfile = join(self.pictures, name)
        with open(self.outfile, 'wb') as outFilePath:
            shutil.copyfileobj(response.raw, outFilePath)
        return self.outfile
    def main(self):
        """Combine Everything and use in for loops."""
        self.filename = self.getFileNameFromURL(self.url)
        self.rawstream = self.getResponse(self.url)
        self.createdfilepath = self.gocreateFile(self.filename, self.rawstream)
        print(f"File was created: {self.createdfilepath}")
        return
if __name__ == '__main__':
    # Example when calling the file directly.
    ImageDownloader("https://stackoverflow.design/assets/img/logos/so/logo-stackoverflow.png")