npm package: @i5920/vue-preview
Description: 一个基于vue3的图片预览插件，可以缩放图片，移动图片，旋转图片，目前只支持pc端。
Author: okcoder
Latest version: 1.0.0

# v-preview-image

一个基于vue3的图片预览插件，可以缩放图片，移动图片，旋转图片，目前只支持pc端。

因为之前做管理后台时，经常有图片需要预览，使用element的图片预览必须基于它的image组件，
我觉得不够方便，所以模仿它的样式封装了这个图片预览插件,可在任何vue3的pc项目使用。

该预览插件使用非常简单、方便！

如果您使用过程中发现有问题或者可优化的地方都果断提出来！

如果对您有帮助，麻烦给个Star！

 https://gitee.com/okcoder/vue-preview

## npm安装
```bash
npm install vue-preview@^1.x -S
```

## 在main.js引入
```javascript
import VuePreview from 'vue-preview'
app.use(VuePreview)
```

## 调用方式

可在模板中直接调用
```html
<div @click="$preview(current,list,key)"></div>
```
也可在js中通过实例调用:
```javascript
this.$preview(current,list,key)
```
组合式api中引入方法调用
```javascript
import { preview } from 'vue-preview'
preview(current,list,key)
```
| 参数       | 说明                                                         | 类型   |
| ---------- | ------------------------------------------------------------ | ------ |
| current | 当前预览的图片索引或者url                                    | Number |
| list | 需要预览的图片数组。 | PreviewFile[]  | 


type PreviewFile = {
  thumb: string // 缩略图小图
  url: string // 图片缩略图大图
  videoUrl?: string // 视频播放地址
  type: 'image' | 'video' // 类型
}



关闭预览
```javascript
import { closePreview } from 'vue-preview'
closePreview()
```


修改默认配置
```javascript
// 方式一：引入方法传入配置
import { setPreviewDefaultOptions } from 'vue-preview'

setPreviewDefaultOptions({
  enabledMaskClose: false, // 是否开启点击遮罩关闭(默认为true)
  enabledEscClose: false, // 是否开启esc按键关闭(默认为true)
  enabledMouseZoom: false, // 是否开启鼠标滚轮缩放(默认为true)
  activeColor: 'green' // 预览图中选中图片的背景颜色(默认为rgba(239, 84, 78, 0.7))
  previewStyle: { width: 'auto',height: 'auto',objectFit: 'cover'}, // 预览图样式
  showDownloadBtn: false // 显示下载按钮
})

// 方式二：在app.use时传入配置
import VuePreview from 'vue-preview'
app.use(VuePreview, { activeColor: '#ff0033' })
```

### 示例

```html
<template>
  <div class="container">
    <h1>示例：</h1>
    <button @click="$preview(0, list)">第一个参数可传入索引,第二个参数传入需要预览的图片数组</button><br /><br />
    <button @click="handleClick">也可通过实例调用</button><br /><br />
  </div>
</template>

<script lang="ts">
import {  setPreviewDefaultOptions } from '../src/index' // 使用setup组合式api时引入方法调用
export default {
  data() {
    return {
      url: 'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg',
      list: [
        {
          thumb: 'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg',
          url: 'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg',
          type: 'image'
        },
        {
          thumb: 'https://cdn.hellomadou.com/H264_4403577/2024-12-08/17336655456032412234cdd1a886ef90253c7d6d805533a8bc5.mp4_videosm',
          url: 'https://cdn.hellomadou.com/H264_4403577/2024-12-08/17336655456032412234cdd1a886ef90253c7d6d805533a8bc5.mp4_videosm',
          videoUrl: 'https://cdn.hellomadou.com/H264_4403577/2024-12-08/17336655456032412234cdd1a886ef90253c7d6d805533a8bc5.mp4?e=1733715202&token=8rTAhKuJuBE7X2WG-4Oyd2VnL2gmWIAeTYI0RIKY:emTBDpcuGiCggKiRCIqWIL5uIwE=',
          type: 'video' 
        },
        {
          thumb: 'https://fuss10.elemecdn.com/2/11/6535bcfb26e4c79b48ddde44f4b6fjpeg.jpeg',
          url: 'https://fuss10.elemecdn.com/2/11/6535bcfb26e4c79b48ddde44f4b6fjpeg.jpeg',
          type: 'image'
        },
        {
          thumb: 'https://fuss10.elemecdn.com/3/28/bbf893f792f03a54408b3b7a7ebf0jpeg.jpeg',
          url: 'https://fuss10.elemecdn.com/3/28/bbf893f792f03a54408b3b7a7ebf0jpeg.jpeg',
          type: 'image'
        },
        {
          thumb: 'https://fuss10.elemecdn.com/d/e6/c4d93a3805b3ce3f323f7974e6f78jpeg.jpeg',
          url: 'https://fuss10.elemecdn.com/d/e6/c4d93a3805b3ce3f323f7974e6f78jpeg.jpeg',
          type: 'image'
        },
        {
          thumb: 'https://fuss10.elemecdn.com/9/bb/e27858e973f5d7d3904835f46abbdjpeg.jpeg',
          url: 'https://fuss10.elemecdn.com/9/bb/e27858e973f5d7d3904835f46abbdjpeg.jpeg',
          type: 'image'
        },
        {
          thumb: 'https://fuss10.elemecdn.com/0/6f/e35ff375812e6b0020b6b4e8f9583jpeg.jpeg',
          url: 'https://fuss10.elemecdn.com/0/6f/e35ff375812e6b0020b6b4e8f9583jpeg.jpeg',
          type: 'image'
        },
        {
          thumb: 'https://fuss10.elemecdn.com/1/34/19aa98b1fcb2781c4fba33d850549jpeg.jpeg',
          url: 'https://fuss10.elemecdn.com/1/34/19aa98b1fcb2781c4fba33d850549jpeg.jpeg',
          type: 'image'
        },
        {
          thumb: 'https://fuss10.elemecdn.com/a/3f/3302e58f9a181d2509f3dc0fa68b0jpeg.jpeg',
          url: 'https://fuss10.elemecdn.com/a/3f/3302e58f9a181d2509f3dc0fa68b0jpeg.jpeg',
          type: 'image'
        }
      ]
    }
  },
  methods: {
    handleClick() {
      this.$preview(0, this.list)
    }
  },
  setup() {
    // 修改默认配置
    setPreviewDefaultOptions({
      enabledEscClose: false
    })
  }
}
</script>
 

```