前端input如何实现拍照上传后,点击对图片的放大预览功能,vue代码如何实现
时间: 2024-03-06 15:50:44 浏览: 105
要实现点击图片放大预览的功能,可以通过绑定点击事件,在点击时弹出模态框或者新窗口来显示预览图片。在模态框或者新窗口中,我们可以展示图片的原始大小,并提供一些交互操作,如放大、缩小、旋转、裁剪等。
下面是一个使用Vue和Element UI实现的图片放大预览的代码示例:
```html
<template>
<div>
<input type="file" accept="image/*" capture="camera" @change="previewImage" ref="fileInput">
<img :src="imageUrl" v-if="imageUrl" @click="showPreview">
<el-dialog :visible.sync="previewVisible">
<img :src="imageUrl" :style="{transform: 'rotate(' + rotateDegree + 'deg) scale(' + scale + ')', cursor: isDragging ? 'grabbing' : 'grab'}" @mousedown="startDrag" @mouseup="endDrag" @mousemove="onDrag" ref="previewImage">
<el-slider v-model="scale" :min="0.1" :max="5" :step="0.1" style="width: 300px; margin: 10px 0;"></el-slider>
<el-button-group>
<el-button type="primary" @click="rotateDegree -= 90">向左旋转</el-button>
<el-button type="primary" @click="rotateDegree += 90">向右旋转</el-button>
</el-button-group>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
imageUrl: '',
previewVisible: false,
rotateDegree: 0,
scale: 1,
isDragging: false,
startX: 0,
startY: 0,
startLeft: 0,
startTop: 0,
};
},
methods: {
previewImage(event) {
const file = event.target.files[0];
if (!file) {
return;
}
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = (e) => {
this.imageUrl = e.target.result;
};
},
showPreview() {
this.previewVisible = true;
},
startDrag(event) {
this.isDragging = true;
this.startX = event.clientX;
this.startY = event.clientY;
this.startLeft = this.$refs.previewImage.offsetLeft;
this.startTop = this.$refs.previewImage.offsetTop;
},
endDrag() {
this.isDragging = false;
},
onDrag(event) {
if (!this.isDragging) {
return;
}
const dx = event.clientX - this.startX;
const dy = event.clientY - this.startY;
const left = this.startLeft + dx;
const top = this.startTop + dy;
this.$refs.previewImage.style.left = left + 'px';
this.$refs.previewImage.style.top = top + 'px';
},
},
};
</script>
```
在上面的代码中,我们新增了一个图片预览的模态框,当用户点击图片时,会通过showPreview方法设置previewVisible属性为true,从而显示模态框。模态框中使用了Element UI的Slider组件,用于控制图片的缩放比例;同时还提供了向左旋转、向右旋转的按钮,用于调整图片的旋转角度;通过鼠标拖拽实现了图片的平移功能。
注意,上面的示例只是一个简单的实现,还有很多细节需要注意,比如图片的边界判断、拖拽的时候阻止选中文本等等。
阅读全文