Using the code below each image download) file_get_contents() ) takes on average 8-15 seconds.....
If I do not use a context on file_get_contents() then image down
Your context tells file_get_contents() to close the HTTP connection every time. Perhaps that is why the code takes so long, as it closes and re-opens connections many times? I am not familiar with the internals of file_get_contents(), but you might be able to tweak the context to use "Connection: keep-alive" for all but the last connection, and "Connection: close" for the last.
HTTP 1.1 requests are pipelined by default. If you don't "Connection: Close", it assumes "Connection: Keep-Alive", and then you have to wait for the connection to time out (since you never explicitly closed it) before the next loop will start.