Dengan pempopularan peranti mudah alih, permintaan untuk pemprosesan imej semakin tinggi, antaranya pemangkasan dan pemampatan imej merupakan keperluan yang agak biasa Artikel ini akan memperkenalkan cara melaksanakan pemangkasan dan pemampatan imej dalam Vue.
1. Pangkas gambar
Mula-mula anda perlu memasang pemalam vue-cropper, yang berasaskan cropperjs dan boleh melaksanakan fungsi pemangkasan imej dengan cepat.
npm install vue-cropper --save
introduce plug-in in main.js dan daftar:
import VueCropper from 'vue-cropper' Vue.component('VueCropper', VueCropper)
add component component dalam komponen:
<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>
data () { return { image: null, croppedImage: null } }
Tambah kaedah getFile untuk mendapatkan imej yang dimuat naik:
getFile (event) { let file = event.target.files[0] let reader = new FileReader() reader.readAsDataURL(file) reader.onload = e => { this.image = e.target.result } }
Mampatkan imej
2. Selain memotong imej, Dalam sesetengah kes, kita juga perlu memampatkan imej untuk meningkatkan kelajuan pemuatan halaman Berikut ialah cara untuk mencapai pemampatan imej.Pasang pemalam
getCroppedImage () { this.$refs.cropper.getCroppedCanvas().toBlob(blob => { this.croppedImage = window.URL.createObjectURL(blob) }) }
introduce plug-in
npm install vue-image-compressor --save
add component
import ImageCompressor from 'vue-image-compressor' Vue.use(ImageCompressor)
<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>
data () { return { image: null, compressedImage: null } }
Imej termampat
Tambah kaedah compressImage untuk memampatkan imej:getFile (event) { let file = event.target.files[0] let reader = new FileReader() reader.readAsDataURL(file) reader.onload = e => { this.image = e.target.result } }
compressImage () { let options = { quality: 0.7, maxWidth: 500, maxHeight: 500, mimeType: 'image/jpeg' } this.$compress(this.image, options).then(data => { this.compressedImage = data }) }
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pemangkasan dan pemampatan imej dalam Vue?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!