It's not possible to protect an image against any person, but it can be protected enough for most of the users. There are a couple of ways to do this, most popular are CSS tricks, but today I will present another way.
Can you save below image? I bet you can't! ;-)
Lest imagine an image 100px x 100px, instead of displaying it to the user, we can show him/her a table 100x100, where each cell is 1px x 1px size and has the same color as the image same with the same coordinates. mentioned image size is just for make it easier to understand, in fact it can be any size, but the bigger it is, the bigger the table is and it can dramatically slow down the web browser.
I made a simple script to translate images into tables, you can download it from my GitHub (note that you need all files in the directory, not only the script). You need Python3 and Pillow library to run it.
Usage is simple, there is only one (mandatory) command line - the path to the input file:
C:\Users\rgawron\snippets\Image2HTMLTable>python image2HTMLTable.py sampleImage.png
Generated table-image is stored as output.html