In diesem Artikel wird hauptsächlich vue.js vorgestellt, um die lokale Vorschau-, Zuschneide-, Komprimierungs- und Hochladefunktion von Bildern zu implementieren. Der Code ist einfach und leicht zu verstehen, sehr gut und hat Referenzwert 🎜>
Der folgende Code beinhaltet Vue 2.0- und ES6-Syntax.<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}')`; }
im Filter ist so geschrieben, dass sich das Bild an die Inhaltsskalierung anpassen kann. sizingMethod='scale'
, also muss es so sein in document.selection.createRange()
Fügen Sie einfach elInput.select()
danach hinzu. elInput.blur()
standardmäßig für input[type=file]
eingestellt, was unter IE9 zu einem Fehler führt. Es sollte vom Browser als Täuschung der Benutzer zum Klicken angesehen werden, sodass sie durch Kurven gehen müssen, um das Land zu retten. visible:hidden
label{ overflow:hidden; } label input[type='file']{ position:absolute; top:9999px; left:9999px; }
IE9-Lösung
Der Parameter src akzeptiert den lokalen Bildpfadlet 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); };
dient dazu, die Originalgröße des Bildes anzuzeigen. sizingMethod='image'
Nicht-ie9-Lösung
Der Parameter src akzeptiert den Base64-codierten Bildpfadconst getSize = (src, callback) => { const image = new Image(); image.onload = () => { callback(image.width, image.height); }; image.src = src; };
Lösung des Problems, dass die Seite nicht gerendert wird, wenn Vue das Array über die folgende Tabelle ändert
vue2.0 axios Lösung für das Problem des domänenübergreifenden Renderns
Lösung für das Optionsüberlagerungsproblem von select in Laui
Das obige ist der detaillierte Inhalt vonImplementieren Sie eine Reihe von Funktionen wie lokale Vorschau, Zuschneiden, Komprimieren und Hochladen von Bildern in vue.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!