效果:
<template>
<img ref="imgRef" :src="fileUrl" class="custom-img" />
</template>
<script>
import Viewer from 'viewerjs'
import 'viewerjs/dist/viewer.css'
export default {
name: 'imgView',
mixins: [],
components: {},
// 数据部分
props: {
fileUrl: {
type: String,
default: ''
}
},
data () {
return {
viewer: null
}
},
computed: {},
watch: {
fileUrl: {
handler (val) {
if (val) {
this.$nextTick(() => {
this.showImg()
})
}
},
immediate: true
}
},
// 生命周期
created () {},
beforeDestroy () {
if (this.viewer) {
this.viewer?.destroy?.()
this.viewer = null
}
},
mounted () {},
unmounted () {},
// 方法
methods: {
showImg () {
const that = this
if (this.viewer) {
this.$nextTick(() => {
this.viewer?.update()
})
} else {
that.$nextTick(function () {
const ViewerDom = this.$refs.imgRef
this.viewer = new Viewer(ViewerDom, {
// 相关配置项,详情见下面
toolbar: {
zoomIn: 1,
zoomOut: 1,
oneToOne: 1,
reset: 1,
rotateLeft: 1,
rotateRight: 1
}, // 显示工具条
inline: true,
navbar: false,
viewed () {
// 图片显示比例 100%
// this.viewer.zoomTo(0.4)
}
})
})
}
}
}
}
</script>
<style lang="less" scoped>
.custom-img {
max-width: 1640px;
width: 1640px;
object-fit: contain;
height: 100%;
display: none;
}
</style>