Rendre le code HTML d'une image
Est-il un moyen pour rendre le code html de l'image comme PNG? Je sais que c'est possible, avec de la toile, mais je tiens à rendre standard de l'élément html comme div par exemple.
- Pour créer une certaine forme d'assistance à l'utilisateur, par exemple. Malheureusement, ce n'est pas possible (pour des raisons de sécurité?). Vous devez demander à l'utilisateur d'appuyer sur impr écran afin de faire quelque chose.
- double possible de Comment convertir le code HTML d'un site web pour une image?
- Je veux utiliser le HTML/CSS pour la conception d'un logo.
- pas un doublon: la question que vous avez mentionné est spécifique à java.
- Voici une Étape par Étape tutoriel pour Convertir HTML pour l'IMAGE en format png ou jpeg codepedia.info/2016/02/...
- Tout le monde saura qu'il est possible de faire sur le côté serveur. C'est l'équivalent de répondre: "Ce que 2+2?" avec "5 est proche de ce que vous cherchez, mais il est un peu alambiqué."
- Toile > dataURL > exemple d'Image de freakyjolly.com/...
Vous devez vous connecter pour publier un commentaire.
Je sais que c'est tout à fait une vieille question qui a déjà beaucoup de réponses, mais j'ai encore passé des heures à essayer de le faire réellement ce que je voulais:
À l'aide de Chrome sans tête (version 74.0.3729.157 de cette réponse), il est effectivement facile:
Explication de la commande:
--headless
pistes de Chrome sans l'ouvrir et ferme après la commande est terminée--screenshot
sera une capture de l'écran (à noter qu'il génère un fichier appeléscreenshot.png
dans le dossier où la commande est exécutée)--window-size
permettent de capturer seulement une partie de l'écran (format est--window-size=width,height
)--default-background-color=0
est le tour de magie qui indique à google Chrome pour utiliser un transparent fond, pas la valeur par défaut de la couleur blanche deOui. HTML2Canvas existe pour rendre le code HTML sur
<canvas>
(que vous pouvez ensuite utiliser comme une image).REMARQUE: Il existe un problème connu, que cela ne fonctionnera pas avec SVG
Mai je recommande dom-to-image de la bibliothèque, qui a été écrit uniquement pour remédier à ce problème (je suis le responsable).
Voici comment vous l'utilisez (certains plus ici):
domtoimage.toSvg
), puis le rendre vous-même sur la toile et essayer de jouer avec la toile de résolution en quelque sorte. Il est probablement possible de mettre en œuvre cette fonctionnalité comme une sorte d'option de rendu dans la lib elle-même, de sorte que vous pouvez passer les dimensions de l'image en pixels. Si vous en avez besoin, je vous remercie de vous créer un problème sur github.zoom:2
sur l'élément avant de rendu qui fonctionne, mais, malheureusement, les cultures de l'image aux dimensions d'origine plutôt que de les nouvelles dimensionsIl y a beaucoup d'options, et ils ont tous leurs pro et les inconvénients.
Option 1: Utiliser l'une des nombreuses bibliothèques
Pros
Contre
Option 2: Utilisation de PhantomJs et peut-être un wrapper de la bibliothèque
Pros
Contre
Option 3: Utilisation de google Chrome sans Tête et peut-être un wrapper de la bibliothèque
Pros
Contre
Option 4: Utilisation d'une API
Pros
Contre
Divulgation: je suis le fondateur de ApiFlash. J'ai fait de mon mieux pour fournir un honnête et utile de répondre.
Toutes les réponses ici utiliser des bibliothèques tierces, tandis que le rendu HTML d'une image peut être relativement simple en Javascript. Il y a
estétait même un article sur le sujet sur la toile, la section sur MDN.L'astuce est la suivante:
drawImage
sur la toileJS:
Des choses à noter
Une hauteur fixe solution fonctionne très bien, mais dynamique de la hauteur demandent un peu plus de travail. Le mieux est de rendre les données SVG dans une iframe (pour les isolés CSS champ d'application) et l'utilisation de la taille de la toile.
Document
à être rendus dans un raster (par exemple, unCanvas
), mais parce que personne ne pris la peine de les uniformiser, nous devons recourir à la folie, comme illustré ci-dessus (n'en déplaise à l'auteur de ce code).Vous pouvez utiliser PhantomJS, qui est une tête de webkit (le moteur de rendu de safari et (jusqu'à récemment) chrome) pilote. Vous pouvez apprendre à faire de capture d'écran de pages ici. Espérons que ça aide!
Vous pouvez utiliser un code HTML vers PDF outil comme wkhtmltopdf. Et puis vous pouvez utiliser un PDF à l'image comme outil d'imagemagick. Il est vrai que c'est côté serveur et un très compliquées processus...
Node.js
. Comment de simples frontend?La seule bibliothèque que j'ai eu à travailler pour Chrome, Firefox et MME le Bord était rasterizeHTML. Il produit de meilleure qualité que HTML2Canvas et est toujours pris en charge, à la différence de HTML2Canvas.
Obtenir de l'Élément et le Téléchargement PNG
rasterizeHTML.drawHTML(node.innerHTML, canvas)
Noter que Im appel innerHTML sur le nœudJe ne vous attendez pas à être la meilleure réponse, mais il a semblé suffisamment intéressant pour le poste.
Écrire une application qui ouvre votre navigateur favori souhaité document HTML, les tailles de la fenêtre correctement, et prend une capture d'écran. Ensuite, retirer les bords de l'image.
Utilisation html2canvas il suffit d'inclure le plugin et l'appel de la méthode pour convertir le code HTML sur une Toile, puis télécharger-image PNG
Source: http://www.freakyjolly.com/convert-html-document-into-image-jpg-png-from-canvas/
Utiliser ce code, il va sûrement travailler:
JS:
Il suffit de ne pas oublier d'inclure Html2CanvasJS fichier dans votre programme.
https://html2canvas.hertzen.com/dist/html2canvas.js
Vous ne pouvez pas le faire à 100% de précision avec JavaScript seul.
Il y a un Qt Webkit outil d' là, et un une version de python. Si vous voulez le faire vous-même, j'ai eu du succès avec le Cacao:
Espérons que cette aide!
Installer phantomjs
Créer un fichier github.js avec le code suivant
Passer le fichier comme argument de phantomjs
Vous pouvez certainement. GrabzIt de l'API JavaScript vous permet de capturer une div dans une page web comme ceci:
Où #caractéristiques est l'ID de la div pour la capture. Si vous vouliez convertir le code HTML d'une image. Vous pouvez utiliser cette technique:
Avertissement j'ai construit cette API!
HtmlToImage.jar sera le moyen le plus simple pour convertir une page html en une image
La conversion de HTML pour l'image à l'aide de java
Vous pouvez ajouter une référence HtmlRenderer à votre projet et faire le suivant,