Bonjour. Je voudrais vous présenter Crop, une extension Chrome conçue pour capturer avec précision la partie souhaitée d’une page web.
Crop affiche un overlay au-dessus de la page en cours de consultation, puis permet de pointer et sélectionner un élément DOM avec la souris, ou de faire glisser directement une zone, afin de la copier ou l’enregistrer en PNG.
J’ai trouvé très pratique le flux de sélection précise d’éléments dans la fonctionnalité de capture d’écran de Firefox, et j’ai commencé ce projet parce que je voulais pouvoir utiliser une approche similaire dans Chrome.
Fonctionnalités principales
- mise en surbrillance des éléments DOM au survol de la souris
- sélection d’un élément par clic
- sélection d’une zone personnalisée par glisser-déposer
- déplacement et redimensionnement de la zone sélectionnée
- capture du viewport actuel
- capture de la page entière
- capture avec défilement pour une zone sélectionnée qui se prolonge hors du viewport
- copie du PNG dans le presse-papiers ou enregistrement dans un fichier
Autorisations et vie privée
Comme il s’agit d’une extension de navigateur, les autorisations peuvent susciter des inquiétudes, donc j’ai essayé de les réduire au maximum.
À l’heure actuelle, les autorisations utilisées sont à peu près les suivantes.
- activeTab : accès temporaire uniquement à l’onglet actuel dans lequel l’utilisateur exécute l’extension
- scripting : injection du script d’overlay dans l’onglet actuel
- clipboardWrite : copie du PNG généré dans le presse-papiers
- downloads : enregistrement du PNG généré
Aucune autorisation étendue comme debugger ou <all_urls> n’est demandée.
Les captures d’écran sont traitées localement dans le navigateur. Aucune capture ni donnée de page n’est envoyée vers un serveur, et aucune télémétrie n’a été ajoutée. Les images ne quittent le navigateur vers le presse-papiers ou les téléchargements que lorsque l’utilisateur clique sur Copy ou Save.
Limites actuelles
En raison des contraintes des extensions Chrome, les cas ci-dessous ont des limitations.
- L’extension ne fonctionne pas sur les pages restreintes comme
chrome://ou le Chrome Web Store. - L’intérieur des iframes cross-origin ne peut pas être inspecté par le content script, ce qui limite la sélection d’éléments.
- L’accès à l’intérieur d’un closed shadow DOM n’est pas possible non plus.
- La capture de page entière fonctionne actuellement sur la base du document top-level.
- Sur les très grandes pages, le PNG peut être réduit à cause des limites du canvas du navigateur.
- Sur les pages avec beaucoup de lazy loading, d’animations ou de sticky header/footer, le résultat du stitch full-page peut ne pas être parfait.
À propos de l’implémentation
Le projet est basé sur Chrome Manifest V3.
Un content script est injecté au-dessus de la page, et un overlay basé sur Shadow DOM gère le flux de sélection, redimensionnement et capture. Pour la page entière ou les zones hors viewport, la capture combine chrome.tabs.captureVisibleTab() et du scroll stitching.
Une partie du code inspirée ou reprise de Firefox Screenshots conserve la mention MPL-2.0, et le code du projet écrit spécifiquement pour ce projet a été préparé pour une distribution sous licence MIT. Il ne s’agit pas d’un projet officiellement affilié à Mozilla/Firefox ni approuvé par eux.
Liens
Chrome Web Store:
https://chromewebstore.google.com/detail/crop/…
GitHub:
https://github.com/postmelee/crop
Si vous capturez souvent des pages web pour rédiger de la documentation, signaler des bugs ou faire des revues d’interface, je vous serais reconnaissant d’essayer l’outil et de partager les points gênants ou vos idées d’amélioration.
3 commentaires
Je l’ai installé hier et je l’utilise depuis.
J’avais toujours l’habitude de sélectionner une zone en la faisant glisser à la souris, donc c’est devenu bien plus pratique grâce à ça. Merci.
En revanche, il semble y avoir un petit bug.
Que ce soit avec la copie ou le téléchargement, il semble qu’une marge blanche inutile apparaisse sur la droite de l’image.
Testé sur un environnement MacOS et Chrome.
Bonjour, merci pour le signalement. Dans mon environnement local macOS + Chrome, je n’ai pas encore réussi à reproduire le même problème de marge blanche.
Il peut s’agir d’une différence d’environnement. Pourriez-vous partager les versions de macOS/Chrome/Crop, le zoom de Chrome, le facteur d’échelle de l’écran, la page où le problème s’est produit, ainsi qu’une capture d’écran de l’image obtenue ? S’il est possible de comparer la zone sélectionnée et l’image résultante, cela nous aidera à identifier la cause.
Si possible, merci de créer une issue avec le formulaire de signalement de bug ci-dessous. Nous avons préparé les champs nécessaires afin de pouvoir vérifier toutes les informations importantes sans rien oublier.
https://github.com/postmelee/crop/issues/new?template=bug_report.yml
Vous pouvez la soumettre via ce lien, ou bien ajouter les informations complémentaires dans ce commentaire.
Dès que nous aurons pu le confirmer, nous le suivrons dans une issue de bug distincte.
J’ai signalé le bug sur GitHub.
J’espère que cela vous aidera à le résoudre.