VUE + tiff.js 加载 tiff,tif 图片

前段时间公司有个需求,就是前端要加载大量的tif 和 tiff 格式的图片
瞬间觉得头大如牛,没有一点思路,于是一直问度娘,功夫不负苦心人,终于让我找到了一款比较好用的插件 tiff.js

// 引入依赖
npm install tiff.js

使用

<div class="img-box">
	<div ref="imgContainer" class="tifcontent zoomimg"
     	 @mousewheel="handleZooming"
     	 v-loading.lock="tifLoading"
   	     @mousedown="handleDown"
	></div>
</div>
// 联调接口  获取tif
async getTiffContent (item) {
      this.tifLoading = true
      let offsetHeight = document.getElementsByClassName('img-box')[0].offsetHeight
      let offsetWidth = document.getElementsByClassName('img-box')[0].offsetWidth
      await getTiff({
        attachBatchId: item.attachUrl,
        attachName: item.attachName
      }).then(res => {
      // 引入tiff.js
        var Tiff = require('tiff.js')
        var tiff = new Tiff({ buffer: res.data })
        var canvas = tiff.toCanvas() //绘制canvas
        //获取宽高
        var width = tiff.width()
        var height = tiff.height()
        console.log(width, height)
        if (canvas) {
          canvas.setAttribute('style', 'width: 100%;')
          // 设置宽高 等比例缩放图片
          var scale = 1
          if (width > offsetWidth || height > offsetHeight) {
            if (width > height) {
              scale = offsetWidth / width
            } else {
              scale = offsetHeight / height
            }
          }
          canvas.setAttribute(
            'style',
            'width:' +
              width * scale +
              'px; height: ' +
              height * scale +
              'px;max-width:calc( 100vh* scale - 246px* scale );max-height: calc( 100vh - 180px);'
          )
          canvas.setAttribute('id', item.attachUrl)
          canvas.setAttribute('ref', 'canvas')
        }
      this.tifLoading = false
    },

不过在IE浏览器中加载tif图片会很卡,会出现如图所示的情况,目前没有找到解决办法,如有大佬遇到且已解决,欢迎指教

VUE + tiff.js 加载 tiff,tif 图片

上一篇:如何上载VHD到国内版Windows Azure


下一篇:Flash制作插按钮动画教程