vue中显示 .tif 图片

1、安装 tiff

cnpm install tiff.js

2、main.js 引入

import Tiff from 'tiff.js';
<template><canvas id="tiff-canvas" style="width: 200px; height: auto;"></canvas>
</template>
<script>
export default {mounted(){this.renderTiffImage('aaa.tif', 'tiff-canvas');}methods:{// 渲染 TIFF 图像到 CanvasrenderTiffImage(tiffUrl, canvasId) {// 获取 Canvas 元素const canvas = document.getElementById(canvasId);if (!canvas) return;// 获取 Canvas 的显示尺寸const canvasWidth = 1400;  // Canvas 显示的宽度const canvasHeight = 1000;  // Canvas 显示的高度// 计算设备的像素比率const dpr = window.devicePixelRatio || 1;// 设置 Canvas 的物理大小canvas.width = canvasWidth * dpr;canvas.height = canvasHeight * dpr;// 创建一个 XMLHttpRequest 请求来加载 TIFF 文件const xhr = new XMLHttpRequest();xhr.open('GET', tiffUrl, true);xhr.responseType = 'arraybuffer'; // 设置响应类型为二进制// 当请求成功时,使用 tiff.js 解析 TIFF 文件xhr.onload = () => {const arrayBuffer = xhr.response;const tiff = new Tiff({ buffer: arrayBuffer }); // 使用 tiff.js 解析 TIFF 文件const image = tiff.toCanvas(); // 获取 Canvas 对象// 获取 TIFF 图像的原始尺寸const imgWidth = image.width;const imgHeight = image.height;// 计算等比例缩放的宽高let drawWidth, drawHeight;const imgRatio = imgWidth / imgHeight;const canvasRatio = canvasWidth / canvasHeight;if (imgRatio > canvasRatio) {// 图片更宽,宽度填满 canvasdrawWidth = canvasWidth * dpr;drawHeight = drawWidth / imgRatio;} else {// 图片更高,高度填满 canvasdrawHeight = canvasHeight * dpr;drawWidth = drawHeight * imgRatio;}// 计算图片绘制的起始位置(居中显示)const offsetX = (canvas.width - drawWidth) / 2;const offsetY = (canvas.height - drawHeight) / 2;// 获取 Canvas 的上下文,并将图像绘制到 Canvas 上const ctx = canvas.getContext('2d');ctx.clearRect(0, 0, canvas.width, canvas.height);  // 清空 canvasctx.drawImage(image, offsetX, offsetY, drawWidth, drawHeight);};xhr.send(); // 发送请求},}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/63682.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

day08 接口测试(4)知识点完结!!

【没有所谓的运气&#x1f36c;&#xff0c;只有绝对的努力✊】 目录 1、postman读取外部数据文件&#xff08;参数化&#xff09; 1.1 数据文件简介 1.2 导入外部数据文件 1.2.1 csv文件 1.2.2 导入 json文件 1.3 读取数据文件数据 1.4 案例 1.5 生成测试报告 2、小…

linux 安装 Jenkins 教程

前言 Jenkins 是一个开源的自动化服务器&#xff0c;广泛用于持续集成&#xff08;Continuous Integration&#xff0c;CI&#xff09;和持续交付&#xff08;Continuous Delivery&#xff0c;CD&#xff09;领域。它帮助开发者自动化软件构建、测试、部署等过程&#xff0c;从…

鸿蒙高级开发者认证的主观题试题及答案

以下是一份鸿蒙高级开发者认证的主观题试题及答案示例,涵盖了鸿蒙开发中的多个关键技术和应用场景相关内容,希望对你有所帮助: 一、论述题(每题 20 分,共 60 分) 1. 阐述鸿蒙操作系统中分布式软总线的工作原理、核心优势以及在多设备协同应用开发场景下的应用方式,并举…

IdentityServer4框架、ASP.NET core Identity

OAuth2.0 IdentityServer4 官网 中文官网 ASP.NET Core Identity提供了一个用来管理和存储用户账户的框架. IdentityServer4是基于ASP.NET Core实现的认证和授权框架&#xff0c;是对OpenID Connect和OAuth 2.0协议的实现。 IdentityServer是一个中间件,它可以添加符合OpenID…

ZZCMS2023存在跨站脚本漏洞(CNVD-2024-44822、CVE-2024-44818)

ZZCMS是一款用于搭建招商网站的CMS系统&#xff0c;由PHP语言开发&#xff0c;可快速搭建&#xff1a;医药招商、保健品招商、化妆品招商、农资招商、孕婴童招商、酒类副食类等招商网站。 国家信息安全漏洞共享平台于2024-11-14公布其存在跨站脚本漏洞。 漏洞编号&#xff1a…

使用Kubernetes部署MySQL+WordPress

目录 前提条件 部署MySQL和WordPress 编写yaml文件 应用yaml文件 存在问题及解决方案 创建PV(持久化卷) 创建一个PVC(持久化卷声明) 部署添加PVC 查看PV对应的主机存储 删除资源 查看资源 删除deployment和service 查看主机数据 删除PVC和PV 删除主机数据 前提条…

每日一刷——12.10——学习二叉树解题模式(二)

题目三&#xff1a;填充每个节点的下一个右侧节点指针1 题目描述&#xff1a;116. 填充每个节点的下一个右侧节点指针 - 力扣&#xff08;LeetCode&#xff09; 我的理解&#xff1a; 我的感觉是同父亲还好搞一点&#xff0c;感觉是在遍历到每一个节点的时候&#xff0c;就把…

Spring Cloud Alibaba:一站式微服务解决方案

Spring Cloud Alibaba介绍 在当今的软件开发领域&#xff0c;微服务架构因其灵活性、可扩展性和独立性等优势而备受青睐。Spring Cloud Alibaba 作为一款强大的一站式微服务解决方案&#xff0c;为开发者提供了丰富的工具和组件&#xff0c;帮助他们轻松构建和管理复杂的微服务…

服务器数据恢复—LINUX下各文件系统删除/格式化的数据恢复可行性分析

Linux操作系统是世界上流行的操作系统之一&#xff0c;被广泛用于服务器、个人电脑、移动设备和嵌入式系统。Linux系统下数据被误删除或者误格式化的问题非常普遍。下面北亚企安数据恢复工程师简单聊一下基于linux的文件系统&#xff08;EXT2/EXT3/EXT4/Reiserfs/Xfs&#xff0…

vs打开unity项目 新建文件后无法自动补全

问题 第一次双击c#文件自动打开vs编辑器的时候能自动补全&#xff0c;再一次在unity中新建c#文件后双击打开发现vs不能自动补全了。每次都要重新打开vs编辑器才能自动补全&#xff0c;导致效率很低&#xff0c;后面发现是没有安装扩展&#xff0c;注意扩展和工具的区别。 解决…

网络安全-态势感知

0x00 定义&#xff1a; 态势感知&#xff08;Situation Awareness&#xff0c;SA&#xff09;能够检测出超过20大类的云上安全风险&#xff0c;包括DDoS攻击、暴力破解、Web攻击、后门木马、僵尸主机、异常行为、漏洞攻击、命令与控制等。利用大数据分析技术&#xff0c;态势感…

命令模式的理解和实践

在软件开发中&#xff0c;设计模式是开发者们经过长期实践总结出来的、可复用的解决方案&#xff0c;用于解决常见的设计问题。命令模式&#xff08;Command Pattern&#xff09;是行为型设计模式之一&#xff0c;它通过将一个请求封装成一个对象&#xff0c;从而允许用户用不同…

SpringBoot3整合SpringMVC

一、实现过程: (1).创建程序 (2).引入依赖: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"…

【优选算法篇】剥洋葱式探索:用二分查找精准定位答案(下篇)

文章目录 须知 &#x1f4ac; 欢迎讨论&#xff1a;如果你在学习过程中有任何问题或想法&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习。你的支持是我继续创作的动力&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;觉得这篇文章对你有帮助吗&#xff1…

若依集成更好用的easyexcel

背景 若依使用的是apach poi并在此基础上进行封装apach poi的原生的api是很复杂的&#xff0c;若依简化了了此操作apach poi的上传速率和下载速率都是没有优化的&#xff0c;依赖于文件大小的限制在此前提下&#xff0c;如果没法满足客户的需求&#xff08;超大型文件的上传&am…

在Ubuntu上使用docker compose安装N卡GPU的Ollama服务

在现代计算环境中,利用 GPU 进行计算加速变得越来越重要。下面将讲解如何在Ubuntu上使用docker compose安装N卡GPU的Ollama服务。 1、安装 NVIDIA 容器工具 首先,需要确保你的系统已经安装了 NVIDIA 容器工具 nvidia-container-toolkit。这是让 Docker 容器访问 GPU 的关键…

MySQL语句学习第三篇_数据库

MySQL语句学习第三篇_数据库 专栏记录MySQL的学习&#xff0c;感谢大家观看。 本章的专栏&#x1f4da;➡️MySQL语法学习 本博客前一章节指向➡️MySQL语句学习第二篇 本人的博客➡️:如烟花般绚烂却又稍纵即逝的主页 文章目录 MySQL的基础操作&#xff08;改与查&#xff0…

windows将文件推给Android真机/实机

记录一下 因为以前只试过从真机实机中将文件推给windows 但是从windows只简单复制粘贴的话会一直报错。 1.电脑安装adb 2.手机开启开发者模式 usb调试 3.usb连接选择文件传输 4.推送命令adb push 文件路径 /sdcard/download 步骤1和2和3不作赘述&#xff0c;可以搜相关配置教程…

初始化MySQL服务器时出现问题解决

这个错误信息表明在初始化MySQL服务器时出现问题。具体来说&#xff0c;错误信息提示数据目录中已经存在文件&#xff0c;导致初始化过程被中止。以下是详细的解释和解决方案&#xff1a; 错误信息解释 警告信息&#xff1a; ‘default_authentication_plugin’ is deprecate…

微信小程序uni-app+vue3实现手机号一键登录方法

微信小程序uni-appvue3实现手机号一键登录方法 网上的教程都挺乱&#xff0c;写得都不怎么全&#xff0c;我重新实现了一下&#xff0c;把具体的方法都分享出来。 uni-app/微信小程序官方API 1. uni.login uni-app提供的统一登录接口,用于获取登录凭证(code)。 语法: uni…