Découper une image en morceaux pour éviter la copie trop facile

Découper une image en morceaux pour éviter la copie trop facile - HTML/CSS - Programmation

Marsh Posté le 10-03-2022 à 12:37:58    

Bonjour,
 
Pour éviter que mon image de webcam soit réutilisée par des sites commerciaux je voudrais compliquer suffisamment le travail aux webmasters peu scrupuleux. Mon image est produite par un raspberry pi et le site est sur un serveur, j'envoie une image toutes les demi-heures.
 
L'idée (sauf si vous avez mieux et plus facile : découper l'image en morceaux et la page web affiche
J'ai trouvé  

Code :
  1. <HTML>
  2.   <BODY>
  3.   <style>
  4.     div.ligne {
  5.     margin-top: -5px; /* à ajuster */
  6.     text-align: center;
  7. }
  8. </style>
  9.     <div class="ligne">
  10.       <IMG SRC="images/index1_a.png"><IMG SRC="images/index2_a.png"><IMG SRC="images/index3_a.png">
  11.     </div>
  12.      <div class="ligne">
  13.       <IMG SRC="images/index4_a.png"><IMG SRC="images/index5_a.png"><IMG SRC="images/index6_a.png">
  14.    
  15.  
  16.   </BODY>
  17. </HTML>


 
L'ennui c'est que si la largeur de fenêtre est inférieure à la somme des largeurs d'images tout est décalé.
 
Doit bien y avoir une solution pour que dans ce cas des ascenseurs apparaissent obligeant ainsi à simuler une seule image visible
 
Merci d'avance
 
fr

Reply

Marsh Posté le 10-03-2022 à 12:37:58   

Reply

Marsh Posté le 10-03-2022 à 14:12:54    

C'est du html à l'ancienne ça.  
Mais tout en restant simple, en forçant déjà une largeur minimale fixe sur la div qui contient les photos ("min-width" en css) ça ne résout pas le problème ?


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 10-03-2022 à 14:13:10    

En mettant tes img en float:left;width:50%; et tes div.ligne en clear:left ça devrait fonctionner...


---------------
D3
Reply

Marsh Posté le 10-03-2022 à 19:17:58    

Merci,  
Vous êtes trop spécialisés pour moi je ne suis pas capable d'exploiter vos réponses.
J'ai trouvé de quoi compléter et qui semble convenir :

Code :
  1. <HTML>
  2.   <BODY>
  3.  
  4.   <style type="text/css">
  5. body {
  6. width: 1200px;   /* à ajuster */
  7. margin-right: auto;
  8. margin-left: auto;
  9. background-color: #cccccc;
  10. height: 800px;   /* à ajuster */
  11. }
  12.     div.ligne {
  13.     margin-top: -5px; /* Ã  ajuster */
  14.     text-align: center;
  15. }
  16. </style>
  17.     <div class="ligne">
  18.       <IMG SRC="images/index1_a.png"><IMG SRC="images/index2_a.png"><IMG SRC="images/index3_a.png">
  19.     </div>
  20.      <div class="ligne">
  21.       <IMG SRC="images/index4_a.png"><IMG SRC="images/index5_a.png"><IMG SRC="images/index6_a.png">
  22.    
  23.  
  24.   </BODY>
  25. </HTML>

Reply

Marsh Posté le 10-03-2022 à 20:25:18    

Ton truc risque de ne pas être responsive (ne pas bien marcher avec toutes les résolutions d'écran).
 
En mettant une taille en % et une largeur maximum pour ton conteneur, tu auras quelque chose qui s'affichera bien même sur un vieux mobile avec 300px de large par exemple...
 
https://jsfiddle.net/n5fys8Lz/
 

Code :
  1. <!doctype html>
  2. <html lang="fr">
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <style type="text/css" media="all">
  7. body {
  8.   background:#000;
  9. }
  10. div {
  11.   max-width:600px;
  12.   margin:0 auto;
  13. }
  14. img {
  15.   float:left;
  16.   width:50%;
  17.   height:auto;
  18. }
  19. </style>
  20. </head>
  21. <body>
  22. <div>
  23.   <img src="https://via.placeholder.com/300/0000FF/FFFFFF/?text=A">
  24.   <img src="https://via.placeholder.com/300/00FF00/FFFFFF/?text=B">
  25.   <img src="https://via.placeholder.com/300/FF0000/FFFFFF/?text=C">
  26.   <img src="https://via.placeholder.com/300/FF00FF/FFFFFF/?text=D">
  27.   <img src="https://via.placeholder.com/300/FFFF00/FFFFFF/?text=E">
  28.   <img src="https://via.placeholder.com/300/00FFFF/FFFFFF/?text=F">
  29. </div>
  30. </body>
  31. </html>

Message cité 1 fois
Message édité par mechkurt le 10-03-2022 à 20:34:14

---------------
D3
Reply

Marsh Posté le 10-03-2022 à 21:42:53    

Tu peux passer aussi par le src data base64 : https://fr.w3docs.com/tools/image-base64
Comme ça, plus de fichier image à télécharger.
Pour des images responsive : https://www.w3schools.com/howto/how [...] onsive.asp
Cet exemple pourra aussi sans doute t'aider pour la mise en page : https://www.w3schools.com/howto/how [...] y_side.asp
Un autre exemple de positionnement qui exploite le css3 (flexbox et grid) : https://developer.mozilla.org/fr/do [...] rid_Layout
 
Enfin, pour gérer différents types de tailles d'images suivant la taille de l'écran du terminal : https://www.dofactory.com/html/img/sizes


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 11-03-2022 à 16:47:26    

mechkurt a écrit :

Ton truc risque de ne pas être responsive (ne pas bien marcher avec toutes les résolutions d'écran).
 
En mettant une taille en % et une largeur maximum pour ton conteneur, tu auras quelque chose qui s'affichera bien même sur un vieux mobile avec 300px de large par exemple...
 
https://jsfiddle.net/n5fys8Lz/
 

Code :
  1. <!doctype html>
  2. <html lang="fr">
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <style type="text/css" media="all">
  7. body {
  8.   background:#000;
  9. }
  10. div {
  11.   max-width:600px;
  12.   margin:0 auto;
  13. }
  14. img {
  15.   float:left;
  16.   width:50%;
  17.   height:auto;
  18. }
  19. </style>
  20. </head>
  21. <body>
  22. <div>
  23.   <img src="https://via.placeholder.com/300/0000FF/FFFFFF/?text=A">
  24.   <img src="https://via.placeholder.com/300/00FF00/FFFFFF/?text=B">
  25.   <img src="https://via.placeholder.com/300/FF0000/FFFFFF/?text=C">
  26.   <img src="https://via.placeholder.com/300/FF00FF/FFFFFF/?text=D">
  27.   <img src="https://via.placeholder.com/300/FFFF00/FFFFFF/?text=E">
  28.   <img src="https://via.placeholder.com/300/00FFFF/FFFFFF/?text=F">
  29. </div>
  30. </body>
  31. </html>



 
Merci mechkurt je viens de tester et en  mettant max-width:2600px; avec 48 morceaux de 324x324 sur 6 lignes de 8 morceaux cela ne fonctionne pas, les images ne sont pas dans une fenêtre de 2600 px de large sur chrome

Reply

Marsh Posté le 11-03-2022 à 17:24:38    

Si tu veux des lignes de 8 morceaux, il faut que la width de tes img soit de 12.5% (100% / 8). :o


---------------
D3
Reply

Marsh Posté le 11-03-2022 à 17:27:44    

rufo a écrit :

Tu peux passer aussi par le src data base64 : https://fr.w3docs.com/tools/image-base64
Comme ça, plus de fichier image à télécharger.


 
Mais je me demande s'il est possible d'automatiser l'encodage  

Citation :


Pour des images responsive : https://www.w3schools.com/howto/how [...] onsive.asp
Cet exemple pourra aussi sans doute t'aider pour la mise en page : https://www.w3schools.com/howto/how [...] y_side.asp


 
Cela me plait bien mais j'ai une ligne vide entre les deux lignes d'images.
 
Comment la faire disparaître ?
 

Code :
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. * {
  6.   box-sizing: border-box;
  7. }
  8. .column {
  9.   float: left;
  10.   width: 33.33%;
  11.   padding: 5px;
  12. }
  13. /* Clearfix (clear floats) */
  14. .row::after {
  15.   content: "";
  16.   clear: both;
  17.   display: table;
  18. }
  19. </style>
  20. </head>
  21. <body>
  22. <style type="text/css" media="all">
  23. /* Three image containers */
  24. .column {
  25.   float: left;
  26.   width: 12.5%;
  27.   padding: 0px;
  28. }
  29. /* Clear floats after image containers */
  30. .row::after {
  31.   content: "";
  32.   clear: both;
  33.   display: table;
  34. }
  35. </style>
  36. <h2>Images Side by Side</h2>
  37. <p>How to create side-by-side images with the CSS float property:</p>
  38. <div class="row">
  39.   <div class="column">
  40.     <IMG SRC="0001_01.png" style="width:100%"> 
  41.   </div>
  42. <div class="column">
  43.     <IMG SRC="0001_02.png" style="width:100%"> 
  44.   </div>
  45.   <div class="column">
  46.     <IMG SRC="0001_03.png" style="width:100%"> 
  47.   </div>
  48.   <div class="column">
  49.     <IMG SRC="0001_04.png" style="width:100%"> 
  50.   </div>
  51.    <div class="column">
  52.     <IMG SRC="0001_05.png" style="width:100%"> 
  53.   </div>
  54. <div class="column">
  55.     <IMG SRC="0001_06.png" style="width:100%"> 
  56.   </div>
  57.   <div class="column">
  58.     <IMG SRC="0001_07.png" style="width:100%"> 
  59.   </div>
  60.   <div class="column">
  61.     <IMG SRC="0001_08.png" style="width:100%"> 
  62.   </div>
  63. </div>
  64. <div class="row">
  65.   <div class="column">
  66.     <IMG SRC="0001_09.png" style="width:100%"> 
  67.   </div>
  68. <div class="column">
  69.     <IMG SRC="0001_10.png" style="width:100%"> 
  70.   </div>
  71.   <div class="column">
  72.     <IMG SRC="0001_11.png" style="width:100%"> 
  73.   </div>
  74.   <div class="column">
  75.     <IMG SRC="0001_12.png" style="width:100%"> 
  76.   </div>
  77.    <div class="column">
  78.     <IMG SRC="0001_13.png" style="width:100%"> 
  79.   </div>
  80. <div class="column">
  81.     <IMG SRC="0001_14.png" style="width:100%"> 
  82.   </div>
  83.   <div class="column">
  84.     <IMG SRC="0001_15.png" style="width:100%"> 
  85.   </div>
  86.   <div class="column">
  87.     <IMG SRC="0001_16.png" style="width:100%"> 
  88.   </div>
  89. </div>
  90. </body>
  91. </html>


Reply

Marsh Posté le 11-03-2022 à 17:32:24    

rufo a écrit :

Tu peux passer aussi par le src data base64 : https://fr.w3docs.com/tools/image-base64
Comme ça, plus de fichier image à télécharger.


 
Mais je me demande s'il est possible d'automatiser l'encodage  

Citation :


Pour des images responsive : https://www.w3schools.com/howto/how [...] onsive.asp
Cet exemple pourra aussi sans doute t'aider pour la mise en page : https://www.w3schools.com/howto/how [...] y_side.asp


 
Cela me plait bien mais j'ai une ligne vide entre les deux lignes d'images.
 
Comment la faire disparaître ?
 

Code :
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. * {
  6.   box-sizing: border-box;
  7. }
  8. .column {
  9.   float: left;
  10.   width: 33.33%;
  11.   padding: 5px;
  12. }
  13. /* Clearfix (clear floats) */
  14. .row::after {
  15.   content: "";
  16.   clear: both;
  17.   display: table;
  18. }
  19. </style>
  20. </head>
  21. <body>
  22. <style type="text/css" media="all">
  23. /* Three image containers */
  24. .column {
  25.   float: left;
  26.   width: 12.5%;
  27.   padding: 0px;
  28. }
  29. /* Clear floats after image containers */
  30. .row::after {
  31.   content: "";
  32.   clear: both;
  33.   display: table;
  34. }
  35. </style>
  36. <h2>Images Side by Side</h2>
  37. <p>How to create side-by-side images with the CSS float property:</p>
  38. <div class="row">
  39.   <div class="column">
  40.     <IMG SRC="0001_01.png" style="width:100%"> 
  41.   </div>
  42. <div class="column">
  43.     <IMG SRC="0001_02.png" style="width:100%"> 
  44.   </div>
  45.   <div class="column">
  46.     <IMG SRC="0001_03.png" style="width:100%"> 
  47.   </div>
  48.   <div class="column">
  49.     <IMG SRC="0001_04.png" style="width:100%"> 
  50.   </div>
  51.    <div class="column">
  52.     <IMG SRC="0001_05.png" style="width:100%"> 
  53.   </div>
  54. <div class="column">
  55.     <IMG SRC="0001_06.png" style="width:100%"> 
  56.   </div>
  57.   <div class="column">
  58.     <IMG SRC="0001_07.png" style="width:100%"> 
  59.   </div>
  60.   <div class="column">
  61.     <IMG SRC="0001_08.png" style="width:100%"> 
  62.   </div>
  63. </div>
  64. <div class="row">
  65.   <div class="column">
  66.     <IMG SRC="0001_09.png" style="width:100%"> 
  67.   </div>
  68. <div class="column">
  69.     <IMG SRC="0001_10.png" style="width:100%"> 
  70.   </div>
  71.   <div class="column">
  72.     <IMG SRC="0001_11.png" style="width:100%"> 
  73.   </div>
  74.   <div class="column">
  75.     <IMG SRC="0001_12.png" style="width:100%"> 
  76.   </div>
  77.    <div class="column">
  78.     <IMG SRC="0001_13.png" style="width:100%"> 
  79.   </div>
  80. <div class="column">
  81.     <IMG SRC="0001_14.png" style="width:100%"> 
  82.   </div>
  83.   <div class="column">
  84.     <IMG SRC="0001_15.png" style="width:100%"> 
  85.   </div>
  86.   <div class="column">
  87.     <IMG SRC="0001_16.png" style="width:100%"> 
  88.   </div>
  89. </div>
  90. </body>
  91. </html>


Reply

Marsh Posté le 11-03-2022 à 17:32:24   

Reply

Marsh Posté le 11-03-2022 à 17:39:25    

mechkurt a écrit :

Si tu veux des lignes de 8 morceaux, il faut que la width de tes img soit de 12.5% (100% / 8). :o


 
Impeccable !!

Reply

Marsh Posté le 14-03-2022 à 04:18:35    

froussel a écrit :

 

Mais je me demande s'il est possible d'automatiser l'encodage

Citation :


Pour des images responsive : https://www.w3schools.com/howto/how [...] onsive.asp
Cet exemple pourra aussi sans doute t'aider pour la mise en page : https://www.w3schools.com/howto/how [...] y_side.asp

 

Cela me plait bien mais j'ai une ligne vide entre les deux lignes d'images.

 

Comment la faire disparaître ?

 



C'est une petite ligne de quelques pixels ?
Si oui, alors rajoute dans ta CSS

 

[code]
img {
  display:block; // marche aussi avec un vertical-align:middle
}
[code]


Message édité par gatsu35 le 14-03-2022 à 04:18:44

---------------
Blablaté par Harko
Reply

Marsh Posté le 15-03-2022 à 13:35:39    

alors qu'il suffit de bloquer le hotlinking :/
https://mediatemple.net/community/p [...] ccess-file par exemple

Reply

Marsh Posté le 15-03-2022 à 14:22:24    

C'est une possibilité mais on ne sait pas comment il se fait voler son image...
 
Tu sais qu'on peut simuler un referer (c'est envoyé en entête par le client et rien de ce qu'envoie un client est 100% fiable).
https://stackoverflow.com/questions [...] tp-referer
Donc si "les webmasters peu scrupuleux" font du curl pour récupérer l'image sur leur serveur ça ne réglera rien (et il est possible qu'il le fasse car si il font du hotlinking il est facile de prouver le "vol" ).


Message édité par mechkurt le 15-03-2022 à 14:24:30

---------------
D3
Reply

Marsh Posté le 15-03-2022 à 15:23:16    

Biensûr que je sais, c'est un peu mon domaine :D
Mais on parle de "copie trop facile" ici. Il est bien plus simple pour le "webmaster" de copier le code html avec les XX images pour les mettre sur son site que de s'amuser à aller spoofer un referrer pour récupérer l'image, la stocker et la réafficher.

Reply

Marsh Posté le 15-03-2022 à 15:58:44    

Ben du coups ce qui serait le plus utile c'est d'avoir un nom d'image dynamique en local avec un htaccess qui pointe sur un php qui lit le vrai fichier non ?
Comme ça son code html ne sera plus valide...
Je supposes qu'il voulait aussi éviter le "enregistrer sous" trop simple à effectuer.
 
Enfin je sais pas, j'aurais tendance à dire qu'il faut aussi menacer "les webmasters peu scrupuleux" de poursuite non ?


---------------
D3
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed