Cet article présente principalement vue.js pour implémenter la fonction locale de prévisualisation, de recadrage, de compression et de téléchargement des images. Le code est simple et facile à comprendre, très bon et a une valeur de référence. Les amis dans le besoin peuvent s'y référer. 🎜>
Le code suivant implique la syntaxe Vue 2.0 et ES6.<p id="wrap"> <label> 点我上传图片 <input type='file' @change="change" ref="input"> </label> <img :src="src" ref="img"> </p> new Vue({ el: '#wrap', data: { // 一张透明的图片 src:'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7', elInput: null }, methods: { change(e){ // ... } } })
function getSize(e){ return e.target.files[0].size; }
const refs = this.$refs const elInput = refs.input const elImg = refs.img
function getSrc(){ const reader = new FileReader(); reader.onload = (e) => { const src = e.target.result; elImg.src = src; }; if (elInput.files && elInput.files[0]) { reader.readAsDataURL(elInput.files[0]); } }
function getSrc(){ elInput.select(); elInput.blur(); const src = document.selection.createRange().text; document.selection.empty(); elImg.style.filter = `progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src='${src}')`; }
dans le filtre est écrit afin que l'image puisse s'adapter à la mise à l'échelle du contenu. sizingMethod='scale'
, il doit donc être dans document.selection.createRange()
Ajoutez simplement elInput.select()
après. elInput.blur()
est défini par défaut pour input[type=file]
, ce qui provoquera une erreur sous IE9. Cela devrait être considéré par le navigateur comme une tromperie pour les utilisateurs qui cliquent, ils doivent donc parcourir des courbes pour sauver le pays. visible:hidden
label{ overflow:hidden; } label input[type='file']{ position:absolute; top:9999px; left:9999px; }
Solution ie9
Le paramètre src accepte le chemin de l'image localelet tempEl; const getSizeIncompatible = (src, callback) => { if (!tempEl) { tempEl = document.createElement('p'); tempEl.style.position = 'absolute'; tempEl.style.width = '1px'; tempEl.style.height = '1px'; tempEl.style.left = '-9999px'; tempEl.style.top = '-9999px'; tempEl.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image)'; document.body.insertBefore(tempEl, document.body.firstChild); } tempEl.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = src; callback(tempEl.offsetWidth, tempEl.offsetHeight); };
consiste à afficher la taille originale de l'image. sizingMethod='image'
Solution non-ie9
Le paramètre src accepte le chemin de l'image encodé en base64const getSize = (src, callback) => { const image = new Image(); image.onload = () => { callback(image.width, image.height); }; image.src = src; };
Ce qui précède est ce que j'ai compilé pour vous. J'espère que cela vous sera utile à l'avenir. Articles associés :
Résoudre le problème que la page ne s'affiche pas lorsque Vue modifie le tableau via le tableau suivant
vue2.0 axios Solution au problème du rendu inter-domaines
Solution au problème de superposition d'options de select dans layui
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!