When it comes to CSS, my workings are not the best but this is a possible idea that you can use.
Use a base64 encoded string to display the image
Right click doesn't work, only leads to saving the page.
background-image: url( data:image/jpeg;base64,<<<your_base64_encoded_string_goes_here>>> );
Using CSS to set a background to a div, it is possible to use the div as a placeholder to display an image and if its right clicked and saved, its saving the webpage.
It will not ever get around "PRINT SCREEN" and people taking images that way... It also won't stop someone downloading the web page and then looking to see how the image is displayed, this means it can be turned in to a physical image file.
You can use PHP to open the image file, then write in the base64 string and the job is done.