Vue génère des images à partir d'éléments dom dans une certaine partie de la page

Dans Vue, vous pouvez utiliser  la bibliothèque html2canvas  pour générer une certaine partie sous forme d'image (générer un code QR).

1. Tout d'abord, installez la bibliothèque html2canvas :

npm install html2canvas

2. Dans le composant Vue, importez la bibliothèque html2canvas :

import html2canvas from 'html2canvas';

Voici un exemple simple :

Cas numéro un

document.getElementById Utilisez les propriétés de Javascript  
1. Créez une méthode pour générer des images :

methods: {
  generateImage() {
    const element = document.getElementById('target-element'); // 替换为目标元素的id或class
    html2canvas(element).then((canvas) => {
      const image = canvas.toDataURL('image/png');
      const link = document.createElement('a');
      link.href = image;
      link.download = 'image.png';
      link.click();
    });
  }
}

2. Ajoutez un bouton au modèle et appelez la méthode pour générer l'image :

<template>
  <div>
    <!-- 目标元素 -->
    <div id="target-element">
      <!-- 这里是需要生成图片的内容 -->
    </div>

    <!-- 生成图片按钮 -->
    <button @click="generateImage">生成图片</button>
  </div>
</template>

Dans l'exemple ci-dessus, cliquer sur le bouton "Générer une image" générera le contenu de l'élément cible sous forme d'image et le téléchargera localement.

Vous devez remplacer <div id="target-element">in par le ou idde l'élément dont vous souhaitez générer une image .idclass

cas deux

Utiliser  refles propriétés de vue

1. Tout d'abord, dans la <template>partie composant, ajoutez un  ref attribut unique à la zone où l'image doit être générée.
 

<template>
  <div>
    <div ref="imageArea">
      <!-- 这里是需要生成图片的内容,包含图片
          请将<img>标签中的src属性替换为实际图片的路径。
         -->
      <img src="path_to_image" alt="Image">
    </div>
    <button @click="generateImage">生成图片</button>
  </div>
</template>

2. Dans le composant   <script> , importez et utilisez html2canvasla bibliothèque.

import html2canvas from 'html2canvas';

export default {
  methods: {
    generateImage() {
      const element = this.$refs.imageArea;
      html2canvas(element, {
        useCORS: true // 添加这个选项以解决跨域问题
      }).then((canvas) => {
        const link = document.createElement('a');
        link.href = canvas.toDataURL('image/png');
        link.download = 'image.png';
        link.click();
      });
    }
  }
}

3. Lorsque le bouton est cliqué, generateImagela méthode est appelée pour générer la zone spécifiée sous forme d'image et la télécharger.


extension:

Dans les composants Vue, comment générer des images à partir du contenu du canevas

1. Tout d'abord, vous devez utiliser un élément Canvas pour dessiner des images.

      Ajoutez un élément Canvas au modèle du composant Vue, définissez la largeur et la hauteur comme suit :

<template>
  <div>
    <canvas ref="canvas" width="500" height="500"></canvas>
  </div>
</template>

2. Dans la méthode du composant Vue, obtenez la référence de l'élément Canvas et utilisez  getContext('2d') la méthode pour obtenir un objet de contexte de dessin 2D :

methods: {
  drawImage() {
    const canvas = this.$refs.canvas;
    const ctx = canvas.getContext('2d');
    // 在这里进行图片绘制
  }
}

3. Ensuite, vous pouvez utiliser  drawImage la méthode pour dessiner des images sur le canevas. Si vous souhaitez dessiner d'autres éléments d'image, vous pouvez d'abord charger l'image et la dessiner sur le canevas une fois le chargement terminé.
Par exemple:

methods: {
  drawImage() {
    const canvas = this.$refs.canvas;
    const ctx = canvas.getContext('2d');

    // 创建一个 Image 对象
    const image = new Image();
    image.src = 'path/to/image.png';

    // 等待图片加载完成后再进行绘制
    image.onload = () => {
      // 将图片绘制到 Canvas 上
      ctx.drawImage(image, 0, 0);

      // 绘制其他图片元素
      const elementImage = new Image();
      elementImage.src = 'path/to/element.png';

      elementImage.onload = () => {
        // 绘制其他图片元素到 Canvas 上
        ctx.drawImage(elementImage, x, y);
        
        // ... 绘制其他元素
      };
    };
  }
}

4. Enfin, vous pouvez  drawImage générer des images en appelant des méthodes.

      Vous pouvez appeler cette méthode lors d'un événement de clic de bouton ou d'un autre moment souhaité :

<template>
  <div>
    <canvas ref="canvas" width="500" height="500"></canvas>
    <button @click="drawImage">生成图片</button>
  </div>
</template>

De cette façon, lorsque le bouton Générer une image est cliqué, le contenu du canevas sera dessiné comme une image contenant d'autres éléments d'image.

Bien sûr, d'autres API de Canvas peuvent également être utilisées pour des opérations de dessin plus complexes, veuillez vous référer aux documents associés pour plus de détails.

Comment l'API native javaScript génère-t-elle une image à partir d'une certaine partie de l'élément DOM

Utilisation  <canvas> d'éléments HTML5 et de l'API graphique JavaScript

Pour générer une image à partir d'un élément DOM, vous pouvez utiliser  <canvas> des éléments HTML5 et l'API graphique JavaScript.

Voici un exemple de code simple :

// 获取要转换为图片的 DOM 元素
const element = document.getElementById('your-element-id');

// 创建 <canvas> 元素,并设置其宽度和高度与要转换的元素相同
const canvas = document.createElement('canvas');
canvas.width = element.offsetWidth;
canvas.height = element.offsetHeight;

// 将要转换的元素绘制到 <canvas> 上
const context = canvas.getContext('2d');
context.drawImage(element, 0, 0);

// 将 <canvas> 转换为图片
const imgData = canvas.toDataURL('image/png');

// 创建 <img> 元素,并将图片数据赋值给其 src 属性
const imgElement = document.createElement('img');
imgElement.src = imgData;

// 将图片元素添加到页面中
document.body.appendChild(imgElement);

Le code ci-dessus suppose que vous avez un élément DOM avec un ID spécifique, que vous devez remplacer par l'ID d'élément réel.

Ce code crée d'abord un élément de la même taille que l'élément à transformer  <canvas> , puis utilise  drawImage() la méthode pour dessiner l'élément transformé dessus  <canvas> .

Ensuite, utilisez  toDataURL() la méthode pour  <canvas> convertir l'URL de données en image, et enfin affectez l'URL de données à  l'attribut <img> d'un élément nouvellement créé  src pour afficher l'image sur la page.

Notez que certains navigateurs peuvent ne pas être en mesure de dessiner des images avec des domaines différents en raison de problèmes d'origine croisée impliqués  <canvas> .

Si vous rencontrez des difficultés pour utiliser le code ci-dessus, assurez-vous que l'élément DOM en cours de transformation a le même domaine que la page sur laquelle le script s'exécute.

Utilisez la bibliothèque :dom-to-image

Pour générer une image à partir d'une certaine partie de l'élément DOM à l'aide de l'API native JavaScript, vous pouvez utiliser  dom-to-image la bibliothèque.

dom-to-image La bibliothèque est un outil pratique qui convertit les éléments DOM en données d'image.

Tout d'abord, vous devez importer la bibliothèque dans votre projet  dom-to-image . Il peut être installé via npm :

npm install dom-to-image

Ensuite, dans le code JavaScript, convertissez l'élément DOM en données d'image en utilisant :

import domtoimage from 'dom-to-image';

const element = document.getElementById('your-element-id');

domtoimage.toPng(element)
  .then(function(dataUrl) {
    const img = new Image();
    img.src = dataUrl;
    document.body.appendChild(img);
  })
  .catch(function(error) {
    console.error('转换为图像时出错:', error);
  });

Le code ci-dessus suppose qu'il existe un élément DOM avec un ID spécifique, que vous devez remplacer par l'ID d'élément réel.

Tout d'abord, obtenez  getElementById() l'élément DOM à convertir en image à l'aide de . Ensuite, appelez  domtoimage.toPng(element) une méthode pour convertir l'élément en données d'image au format PNG. Ensuite, créez un nouvel  <img> élément et affectez des données d'image à ses  src attributs. Enfin, ajoutez l'élément image à la page.

Assurez-vous que  dom-to-image la bibliothèque est correctement importée et installée, et utilisez la syntaxe et le chemin corrects pour importer la bibliothèque dans le script.

 

おすすめ

転載: blog.csdn.net/qq_44848480/article/details/131635003