Originally posted by Lucifix
That doesn't work with Firefox 🙁
sure it does. firefox supports background images. you must be doing something wrong.
personally what i would do, if watermarking isnt an option, and its ok for the few % of people who are slick enough to get around it, would be something like this
<div style="background: url(image.php?id=43) no-repeat;"><img src="clear.gif" width="foo" height="foo"></div>
the width and height of clear.gif would be dynamically generated depending on the size of the image.
you could even make the images id expire after being used once. basically everytime you generate an html page you would create an entry in a database that serves as an alias for a specific image. once image.php outputs an image, it would remove that id from the database. oh and of course send no cache headers.
this would work decent against most users i would think. but you could get around it by making your browser NOT display images, then request the page, look at the html to get the image id, and then just goto the url and save the image. very few users would think of doing that though. it also wouldnt stop crawlers from crawling your site and stealing images, but you know you cant 100% stop theft . i think my suggestion of using an alias id for the image that expires after being used once, would satisfy the 90% figure you asked for.
another thing you may consider, which is kind of like watermarking, would be to cut the images up into a few slices, but then make it display like it were a whole image by using an html table. that would make it a royal pain for anyone to steal your images because they would need to reconstruct them all. you could combine slicing the images with the method i suggested above(using a clear gif in front to prevent right clicking and then using random alias image ids). i think that would make deter all but the most persitant people.
another option that seems simple and would be effective is to embed all images in flash.