Go to main content

Textpattern CMS support forum

You are not logged in. Register | Login | Help

#16 2013-11-18 12:03:14

phiw13
Plugin Author
From: South-Western Japan
Registered: 2004-02-27
Posts: 3,652
Website

Re: copyprotection of images

Gallex wrote:

i guess, those last solutions won’t protect for steeling if user chooses “save page as…” from browser’s menu?

No, indeed. But all those no-right-click js solutions won’t protect your images either in that case. As has already been noted, if you don’t want someone to ‘steel’ your images, don’t put them on a public server.


Where is that emoji for a solar powered submarine when you need it ?
Sand space – admin theme for Textpattern
phiw13 on Codeberg

Offline

#17 2013-11-18 15:47:17

etc
Developer
Registered: 2010-11-11
Posts: 5,680
Website GitHub

Re: copyprotection of images

Gallex wrote:

i guess, those last solutions won’t protect for steeling if user chooses “save page as…” from browser’s menu?

That’s only an idea, but you can try to:

  • encode your images, using www.freeformatter.com/base64-encoder.html, for example, and store encoded strings on your server;
  • create image tags with empty src attribute;
  • set img {pointer-events: none} rule in your css;
  • on page load, load encoded images with jQuery ajax:
$.ajax({ 
    url : 'BASE64_IMAGE_REST_URL', 
    processData : false,
}).always(function(b64data){
    $("#IMAGE_ID").attr("src", "data:image/png;base64,"+b64data);
});

Due to ajax same-origin policy, a user shouldn’t be able to load image strings from a local copy.

Edit: alternatively, you can load just image sources from your server.

Last edited by etc (2013-11-18 15:53:23)

Offline

#18 2013-11-18 16:41:25

gaekwad
Server grease monkey
From: People's Republic of Cornwall
Registered: 2005-11-19
Posts: 4,736
GitHub

Re: copyprotection of images

phiw13 wrote:

That is actually not a great idea, if you care about performance. Background images load with a much lower priority, and secondly, more and more, browsers use some preloading techniques & heuristics to attempt to fetch content images faster (matters on mobile devices even more) – that is images referenced in an img element.

I respectfully stand corrected. Thanks for the info, Philippe.

Offline

#19 2013-11-18 22:12:00

JimJoe
Member
From: United States
Registered: 2010-01-30
Posts: 573
Website

Re: copyprotection of images

Post lower quality copies ? Use Irfanview to lower the color depth ?

Offline

#20 2013-11-19 07:58:57

Gallex
Member
Registered: 2006-10-08
Posts: 1,331

Re: copyprotection of images

thank’s guys for a lot of ideas. went for this ‘disable right click’ easy solution

<script type="text/javascript">
$('body').on('contextmenu', 'img', function(e){ return false; });
</script>

…which saticfied my client

Offline

#21 2013-11-19 10:04:42

Gocom
Developer Emeritus
From: Helsinki, Finland
Registered: 2006-07-14
Posts: 4,533
Website

Re: copyprotection of images

etc wrote:

That’s only an idea, but you can try to:

That doesn’t do anything since browsers save the current document state as stored in the memory. The saved page will include the images as they were loaded. It doesn’t matter when a node is added to the document.

Offline

#22 2013-11-19 11:53:14

etc
Developer
Registered: 2010-11-11
Posts: 5,680
Website GitHub

Re: copyprotection of images

Gocom wrote:

That doesn’t do anything since browsers save the current document state as stored in the memory. The saved page will include the images as they were loaded. It doesn’t matter when a node is added to the document.

Yes and no, try to catch the cat.

Offline

#23 2013-11-19 14:04:59

colak
Admin
From: Cyprus
Registered: 2004-11-20
Posts: 9,388
Website GitHub Mastodon Twitter

Re: copyprotection of images

etc wrote:

Yes and no, try to catch the cat.

It can be done in firefox when pressing Command+i, going to media (the location and type state that it is a png image) and save the image as cat.png. Admittedly not many people would look there though:) I think that it is a cool method and it will deter the average surfer from downloading it.


Yiannis
——————————
NeMe | hblack.art | EMAP | A Sea change | Toolkit of Care
I do my best editing after I click on the submit button.

Offline

#24 2013-11-19 14:20:51

Gocom
Developer Emeritus
From: Helsinki, Finland
Registered: 2006-07-14
Posts: 4,533
Website

Re: copyprotection of images

etc wrote:

Yes and no, try to catch the cat.

Downloaded page contains what is in the memory, so, when downloaded, you get image you loaded with Ajax rather than the placeholder you used. The page source contains:

<img id="test" src="data:image/png;base64,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">

Which is the cat. Chrome, Firefox etc. just dump what is in memory to your drive. Adding something on later event to the document body doesn’t change that. This is one of the reasons why you shouldn’t mix attributes, internal mappins and properties in JavaScript; you get document presentation that doesn’t match what you have in memory when pulling document from memory.

You are better off just using that above base64 encoded image in the document. Saves you HTTP requests too. If you want to do that attribute replacement thing you are doing (that use document state-faults), you can do it without Ajax request. Just assign an attribute to the document, like so:

$('img.fetched').remove();
$('img').addClass('fetched');

Which causes the document in memory contain that particular class, which makes the above statement remove the images with the class.

Last edited by Gocom (2013-11-19 14:26:54)

Offline

#25 2013-11-19 15:34:04

etc
Developer
Registered: 2010-11-11
Posts: 5,680
Website GitHub

Re: copyprotection of images

Guys, I recognize my idea was wrong, and have no doubt you can catch my kitty. :) Still, source encoding is a bit more resistant to page save.

Gocom wrote:

You are better off just using that above base64 encoded image in the document. Saves you HTTP requests too.

For large images page loading could then take too much time?

Offline

#26 2013-11-19 22:59:04

phiw13
Plugin Author
From: South-Western Japan
Registered: 2004-02-27
Posts: 3,652
Website

Re: copyprotection of images

etc wrote:

For large images page loading could then take too much time?

You’re just delaying the load of (large) images; on complex pages the user may end up with ‘holes‘ in the page – or equally annoying for the user, a layout reflow after page load. As I noted earlier in this thread, current UA’s do lots of work to attempt to fetch images faster (prefetching) and your technique actually defeats that completely.


Where is that emoji for a solar powered submarine when you need it ?
Sand space – admin theme for Textpattern
phiw13 on Codeberg

Offline

#27 2013-11-20 12:50:29

etc
Developer
Registered: 2010-11-11
Posts: 5,680
Website GitHub

Re: copyprotection of images

phiw13 wrote:

You’re just delaying the load of (large) images; on complex pages the user may end up with ‘holes‘ in the page – or equally annoying for the user, a layout reflow after page load.

Thank you for the comment, but it’s debatable whether waiting few seconds in front of the white screen is a better experience. You can set image height and width initially, to avoid reflows, and you can instruct browsers to prefetch their encoded sources as well. And who cares about these cat thieves? :)

Offline

#28 2013-11-21 08:06:15

etc
Developer
Registered: 2010-11-11
Posts: 5,680
Website GitHub

Re: copyprotection of images

Kitty is getting harder to catch (pretending you are an average surfer).

Offline

#29 2013-11-21 08:12:38

Pat64
Plugin Author
From: France
Registered: 2005-12-12
Posts: 1,677
GitHub Twitter

Re: copyprotection of images

etc wrote:

Kitty is getting harder to catch (pretending you are an average surfer).

Hi Oleg ;)

That’s fun but we can get the image (finding its URL).
The only one solution is to use watermarks.


Patrick.

Github | CodePen | Codier | Simplr theme | Wait Me: a maintenance theme | [\a mi.ni.ma]: a “Low Tech” simple Blog theme.

Offline

#30 2013-11-21 08:25:15

etc
Developer
Registered: 2010-11-11
Posts: 5,680
Website GitHub

Re: copyprotection of images

Hi Patrick,

you cheat, Average Joe doesn’t look at the page source. :) OK, reload the page and try to get the image URL.

Offline

Board footer

Powered by FluxBB