Hacker News new | ask | show | jobs
by jbaiter 4356 days ago
Working for a major library that does a lot of digitization work for external partners like museums and art galleries, I deal with this a lot. Our solution usually involves (in addition to the obvious approaches mentioned in the beginning of the article) not sending out full-sized images but only tiles, severely rate-limiting the API (heavy users can contact us for an exception) and displaying a discreet watermark with the origin. It's very frustrating as a developer, especially given the fact that 90% of the material is public domain anyways...
2 comments

I like your thinking. With 'deepzoom' images composed of lots of tiles that overlap by 4 pixels ('Seadragon') you can change the tile size from the default 254px to anything else that works with jpg and powers of two. Theoretically you could deliver thousands and thousands of tiles for a high-resolution image. You could also get the viewer to change the zoom level by a small percentage on each 'move' so that anyone trying to stitch together an image from screen-grabs will have that random bonus scaling to deal with - lovely!!!

A half-decent programmer could reverse-de-obfuscate the image tiles into a whole image if they really wanted to, they could even post their code for that onto github, however, in all of the years that Seadragon has been around the tools to make the tiles in the first place haven't exactly proliferated so the tools to decipher the tiles aren't likely to get widespread circulation either. With tiles you are pretty well protecting your stuff as a convenient by-product, the real aim is to deliver a superior viewing experience.

>>discreet watermark with the origin

I'm assuming you are using steganography to achieve this? What kind of information are you imbedding into the image and when exactly does that process occur? Every time someone "downloads" the image?

that reminds me of another technique I used but didn't describe in the article which could be interesting for you:

encode the viewer's IP into the image (with steganography, wrote a small script for that) on the server (every request). whenever your image pops up somewhere in the web you know which IP address is to "blame" (easily bypassed with IP obfusication software though :) )

This is a commonly used technique in game alphas under NDAs (TESO and WoW WLK are the most recent example that come to my mind). The player's account information are embedded in the exif of the screenshots. If a screenshot leaks from someone who doesn't know better, it's possible to track it down.
I've though about it, but there's a privacy concern that turns me off, it's the equivalent of having exif data in pictures, it's really great, until someone decides to do something questionable with the embedded data.