Maison > interface Web > Voir.js > Comment implémenter le recadrage et la compression d'images dans Vue ?

Comment implémenter le recadrage et la compression d'images dans Vue ?

WBOY
Libérer: 2023-06-25 10:27:33
original
4691 Les gens l'ont consulté

Avec la popularisation des appareils mobiles, la demande de traitement d'image devient de plus en plus élevée, parmi lesquelles le recadrage et la compression d'images sont des exigences courantes. Cet article présentera comment implémenter le recadrage et la compression d'images dans Vue.

1. Recadrer les images

  1. Installez le plug-in

Vous devez d'abord installer le plug-in vue-cropper, qui est basé sur cropperjs et peut rapidement implémenter la fonction de recadrage d'image.

npm install vue-cropper --save
Copier après la connexion
  1. Présentez le plug-in

Introduisez le plug-in dans main.js et enregistrez-le :

import VueCropper from 'vue-cropper'
Vue.component('VueCropper', VueCropper)
Copier après la connexion
  1. Ajoutez un composant

Ajoutez un composant de recadrage dans le composant :

<template>
  <div>
    <input type="file" ref="file" @change="getFile($event)" />
    <vue-cropper v-model="image" :guides="true"></vue-cropper>
    <button @click="getCroppedImage">裁剪图片</button>
    <div class="result">
      <img :src="croppedImage" alt="裁剪后的图片" v-if="croppedImage" />
    </div>
  </div>
</template>
Copier après la connexion
  1. Obtenez l'image

Définissez l'objet image dans data Et l'objet image recadrée :

data () {
  return {
    image: null,
    croppedImage: null
  }
}
Copier après la connexion

Ajoutez la méthode getFile pour obtenir l'image téléchargée :

getFile (event) {
  let file = event.target.files[0]
  let reader = new FileReader()
  reader.readAsDataURL(file)
  reader.onload = e => {
    this.image = e.target.result
  }
}
Copier après la connexion
Copier après la connexion
  1. Recadrez l'image

Ajoutez la méthode getCroppedImage pour recadrer l'image :

getCroppedImage () {
  this.$refs.cropper.getCroppedCanvas().toBlob(blob => {
    this.croppedImage = window.URL.createObjectURL(blob)
  })
}
Copier après la connexion

2. Compresser l'image

En plus de recadrer l'image, dans certains cas, nous devons également compresser les images pour améliorer la vitesse de chargement des pages. Voici comment réaliser une compression d'image.

  1. Installez le plug-in

Installez le plug-in vue-image-compressor, qui est basé sur image-compressor.js et peut rapidement implémenter la fonction de compression d'image.

npm install vue-image-compressor --save
Copier après la connexion
  1. Introduire le plug-in

Introduire le plug-in dans main.js et s'inscrire :

import ImageCompressor from 'vue-image-compressor'
Vue.use(ImageCompressor)
Copier après la connexion
  1. Ajouter un composant

Ajouter un composant de téléchargement dans le composant :

<template>
  <div>
    <input type="file" ref="file" @change="getFile($event)" />
    <button @click="compressImage">压缩图片</button>
    <div class="result">
      <img :src="compressedImage" alt="压缩后的图片" v-if="compressedImage" />
    </div>
  </div>
</template>
Copier après la connexion
  1. Obtenir une image

Définir une image objet dans data Et l'objet image compressé :

data () {
  return {
    image: null,
    compressedImage: null
  }
}
Copier après la connexion

Ajoutez la méthode getFile pour obtenir l'image téléchargée :

getFile (event) {
  let file = event.target.files[0]
  let reader = new FileReader()
  reader.readAsDataURL(file)
  reader.onload = e => {
    this.image = e.target.result
  }
}
Copier après la connexion
Copier après la connexion
  1. Image compressée

Ajoutez la méthode compressImage pour compresser l'image :

compressImage () {
  let options = {
    quality: 0.7,
    maxWidth: 500,
    maxHeight: 500,
    mimeType: 'image/jpeg'
  }
  this.$compress(this.image, options).then(data => {
    this.compressedImage = data
  })
}
Copier après la connexion

Parmi elles, les options sont les paramètres de compression, la qualité signifie la qualité de compression, maxWidth et maxHeight représentent la largeur et la hauteur maximales, et mimeType représente le format d'image compressé.

3. Exemple de code

Le code complet est le suivant :

<template>
  <div>
    <h2>图片裁剪</h2>
    <input type="file" ref="file" @change="getFile($event)" />
    <vue-cropper v-model="image" :guides="true"></vue-cropper>
    <button @click="getCroppedImage">裁剪图片</button>
    <div class="result">
      <img :src="croppedImage" alt="裁剪后的图片" v-if="croppedImage" />
    </div>
    <h2>图片压缩</h2>
    <input type="file" ref="file" @change="getFile($event)" />
    <button @click="compressImage">压缩图片</button>
    <div class="result">
      <img :src="compressedImage" alt="压缩后的图片" v-if="compressedImage" />
    </div>
  </div>
</template>

<script>
import VueCropper from 'vue-cropper'
import ImageCompressor from 'vue-image-compressor'

export default {
  name: 'Image',
  components: {
    VueCropper
  },
  plugins: {
    ImageCompressor
  },
  data () {
    return {
      image: null,
      croppedImage: null,
      compressedImage: null
    }
  },
  methods: {
    getFile (event) {
      let file = event.target.files[0]
      let reader = new FileReader()
      reader.readAsDataURL(file)
      reader.onload = e => {
        this.image = e.target.result
      }
    },
    getCroppedImage () {
      this.$refs.cropper.getCroppedCanvas().toBlob(blob => {
        this.croppedImage = window.URL.createObjectURL(blob)
      })
    },
    compressImage () {
      let options = {
        quality: 0.7,
        maxWidth: 500,
        maxHeight: 500,
        mimeType: 'image/jpeg'
      }
      this.$compress(this.image, options).then(data => {
        this.compressedImage = data
      })
    }
  }
}
</script>

<style>
.result {
  margin-top: 1rem;
  max-width: 500px;
}
</style>
Copier après la connexion

4. Résumé

Cet article présente comment implémenter les fonctions de recadrage et de compression d'image dans Vue. , et la compression utilise le plug-in tiers vue-cropper. Plug-in vue-image-compressor, utilisez ces plug-ins pour implémenter rapidement les fonctions de traitement d'image et améliorer l'efficacité du développement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal