【VUE - 工具 - TIFF】01、前端vue+tiffjs预览显示在线tiff图片

本文介绍如何利用Vue结合tiff.js实现在前端快速加载并预览TIFF格式图片的方法。通过npm安装tiff.js依赖后,借助fetch API获取图片数据,并转换为base64编码形式以实现图片的预览。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

需求:通过其他工具前置切出来,并放在服务器目录下的tiff图片,项目需要在前端预览显示。
实现方式:基于vue+tiffjs实现

实现

  • 1、实现效果
    在这里插入图片描述

npm+VUE实现

  • 1、安装依赖
npm i tiff.js -S
|
yarn add tiff.js -S
  • 2、代码实现
<template>
  <div class="home-container-wrap">
    <p v-if="!dataUrl" style="color: red;">正在加载中</p>
    <img v-else :src="dataUrl" style="width: 400px; height: 400px;" alt="">
  </div>
</template>

<script>

export default {
  name: 'Index',
  data () {
    return {
      dataUrl: ''
    }
  },
  mounted () {
    this.getTiffDataUrlHandler()
  },
  methods: {
    // 获取tif图的dataUrl base64编码进行展示
    async getTiffDataUrlHandler () {
      const response = await fetch('http://winserver.geointech.cn:8021/1.tif')
      const buffer = await response.arrayBuffer()
      const Tiff = require('tiff.js')
      const tiff = new Tiff({ buffer })
      this.dataUrl = tiff.toDataURL()
    }
  }
}
</script>


script引入html实现,拷贝运行即可实现

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>前端加载显示TIFF图</title>
  <!-- 以下script tiffjs地址为私有服务器地址,会被定期清除,必须把tiffjs下载到自己本地引入使用 -->
  <script src="http://winserver.geointech.cn:8021/tiff.min.js"></script>
</head>
<body>
  <img style="width: 400px; height: 400px;" alt="">

  <script>
    window.onload = function () {
      getTiffDataUrlHandler()
    }
    async function getTiffDataUrlHandler () {
      const response = await fetch('http://winserver.geointech.cn:8021/1.tif')
      const buffer = await response.arrayBuffer()
      const tiff = new Tiff({ buffer })
      const img = document.querySelector('img')
      img.src = tiff.toDataURL()
    }
  </script>
</body>
</html>
Vue3 中引入一个没有声明文件 (d.ts) 的 JavaScript 库如 tiff.js,当你尝试使用 TypeScript 编译时会报 "Cannot find module 'tiff.js'" 或 "Module not found: Error: Can't resolve 'tiff.js'" 类似的错误,因为 TypeScript 需要类型声明文件来了解库的结构以便进行类型安全检查。 tiff.js 没有官方提供的 d.ts 文件,说明该库可能是纯 JavaScript 实现,或者没有针对 TypeScript 的良好支持。在这种情况下,你可以采取以下步骤: 1. **忽略类型检查**:如果你只想在浏览器环境中运行而不在乎类型安全,可以在 tsconfig.json 中配置 `"skipLibCheck": true` 来跳过对第三方库的类型检查。 ```json { "compilerOptions": { //... "skipLibCheck": true } } ``` 2. **手动编写类型声明**:虽然官方没提供,但你可以自己尝试编写一份简单的类型声明文件(tsd.d.ts),尽管这可能不够全面,可以满足基本的类型提示。 3. **使用 JavaScript(ESM)模式**:如果 tiff.js 支持 ES Modules,可以直接导入并使用,TypeScript 会在编译时自动推断其类型。 4. **查找社区插件**:有些开发者可能会发布针对特定库的社区类型声明,你可以去 npm 包管理器搜索看看是否有合适的。 5. **使用 Babel 或 TypeScript 转换工具**:对于一些老旧的库,可以考虑使用 Babel 将 JavaScript 代码转换为 CommonJS 形式,然后再引入到 TypeScript 项目中。 不过需要注意的是,由于缺少官方类型支持,使用过程中可能会遇到类型不匹配的问题。
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值