首页 > 其他分享 >高分辨率大图像可缩放 Web 查看器的实践

高分辨率大图像可缩放 Web 查看器的实践

时间:2023-06-02 09:33:33浏览次数:65  
标签:__ Web dzsave mydz 查看器 缩放 path pyvips os

高分辨率大图像可缩放 Web 查看器的实践

一、使用 vips 将高分辨率大图像转换为 DZI

  1. 安装 vips

    具体安装步骤请参考libvips Install

    注意,在 windows 11 中安装 v8.14.2 版本后,在运行vips dzsave **.jpg mydz命令时,出现 vips: unknown action "dzsave" 报错,解决办法是重装低版本 v8.14.1,因为在 v8.14.2 中 dzsave 功能被移除了,但有可能在后续版本中会添加回来

  2. 安装 pyvips

    pip install pyvips
    

    pyvips API 参考文档:pyvips

  3. 生成 DZI

    import os
    import pyvips
    
    vipsbin = r'F:\vips-dev-8.14\bin'
    add_dll_dir = getattr(os, 'add_dll_directory', None)
    if callable(add_dll_dir):
        add_dll_dir(vipsbin)
    else:
        os.environ['PATH'] = os.pathsep.join((vipsbin, os.environ['PATH']))
    
    current_abspath = os.path.dirname(os.path.abspath(__file__))
    
    # 打开图像
    image = pyvips.Image.new_from_file(os.path.join(current_abspath, 'bigimage.png'))
    
    # 生成 DZI
    image.dzsave(os.path.join(current_abspath, 'mydz'),
                suffix='.jpg', tile_size=512, overlap=1)
    

    上述代码运行后,将在代码文件目录下生成 mydz.dzi 文件和 mydz_fils 文件夹。其中,dzsave 方法的使用请参考官方文档:pyvips.Image.dzsave

二、使用 flask 为 DZI 提供 HTTP 服务

from flask import Flask, send_from_directory

app = Flask(__name__)

@app.route('/<path:path>')
def static_file(path):
    return send_from_directory('.', path)

if __name__ == '__main__':
    app.run(port=8008)

三、使用 OpenSeadragon 实现 Web 访问

关于 OpenSeadragon 的使用请参考官方文档 OpenSeadragon

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Big Image Viewer</title>
    <script src="./openseadragon/openseadragon.min.js"></script>
    <style type="text/css">
      html,
      body,
      .openseadragon-ctr {
        width: 100%;
        height: 100%;
        margin: 0;
        background-color: #111;
      }
    </style>
  </head>

  <body>
    <div id="contentDiv" class="openseadragon-ctr"></div>

    <script type="text/javascript">
      OpenSeadragon({
        id: "contentDiv",
        prefixUrl: "openseadragon/images/",
        showNavigator: false,
        navigatorPosition: "BOTTOM_LEFT",
        tileSources: {
          Image: {
            xmlns: "http://schemas.microsoft.com/deepzoom/2008",
            Url: "../mydz_files/",
            Format: "jpg",
            Overlap: "1",
            TileSize: "512",
            Size: {
              Height: "3971",
              Width: "73364",
            },
          },
        },
      });
    </script>
  </body>
</html>

查看效果:

  1. 初始状态

    img

  2. 放大状态

    img

标签:__,Web,dzsave,mydz,查看器,缩放,path,pyvips,os
From: https://www.cnblogs.com/yuzhihui/p/17448525.html

相关文章

  • IDEA 创建JavaWeb项目(不依赖 springboot)手动整合 SSM框架
    目录 1.创建一个Maven项目2.创建webapp和WEB-INF目录即可3.设置web.xml文件和web文件目录4.导入相关ssm框架的pom依赖文件5.创建对应的包结构:6.添加配置文件(配置mybatis、spring、springMvc等配置文件)7.web.xml配置文件8. 配置本地Tomcat运行9.打包发布1.创建一个Mav......
  • 浏览器web扫描工具
    NO.1由来在平时打项目时,拿到入口点后就会遇到一个比较尴尬的问题。扫描吧怕点掉了,不扫就只能手动敲ip访问,耗时耗力。就想着用python写个调浏览器扫描的脚本。NO.2代码只适合扫描小网段资产,毕竟目的就是尽量模拟正常访问的流量。写的一般,有需要的可以自己改改#调用浏览器扫描......
  • Rust Web 全栈开发之增加字段和重构
    RustWeb全栈开发之增加字段和重构增加字段和重构现状重构项目目录wsonmain[✘!?]via......
  • java.lang.ClassNotFoundException: weblogic.utils.NestedException
    我单元测试的时候报这种错误Causedby:java.lang.ClassNotFoundException:weblogic.utils.NestedException atjava.net.URLClassLoader$1.run(URLClassLoader.java:202) atjava.security.AccessController.doPrivileged(NativeMethod) atjava.net.URLClassLoader.findC......
  • web Worker
    WebWorker(工作线程)是HTML5中提出的概念,分为两种类型,专用线程(DedicatedWebWorker)和共享线程(SharedWebWorker)。专用线程仅能被创建它的脚本所使用(一个专用线程对应一个主线程),而共享线程能够在不同的脚本中使用(一个共享线程对应多个主线程)。WebWorker的意义在于可以......
  • GoWeb项目目录结构参考
    GoWeb项目目录结构目录结构main.gogo.modgo.summodel 数据库操作,增删改查,固化的通用接口view 视图文件controller 通讯请求,API操作等内容等业务逻辑router middleware 中间件部分可以放置在根目录,也可以放置在router内.gin项目一般放置在router目录内confi......
  • 使用WPF、OwinSelfHost和Swagger创建自托管的Web API
    在本篇博客中,我将介绍如何在WPF应用程序中使用OwinSelfHost和Swagger来创建自托管的WebAPI。我们将使用WPF作为我们的应用程序界面,OwinSelfHost来自托管我们的WebAPI,并使用Swagger来为我们的API生成文档。首先,确保你的计算机上已安装了以下组件:VisualStudio2017.NETFramew......
  • python 搭建一个Web自动化测试环境
    搭建一个Web自动化测试环境的具体步骤如下:1.安装Python:首先需要安装Python编程语言。可以从Python官方网站下载最新的稳定版本,并按照安装指南进行安装。官方网站链接:https://www.python.org2.安装浏览器驱动程序(注意:浏览器版本需要和驱动版本对应):根据使用的浏览器类型,下载对应......
  • web自动化
    元素定位XPATH选择器什么是xpath?XPath即为XML路径语言,它是一种用来(标准通用标记语言的子集)在HTML\XML文档中查找信息的语言。W3School官方文档:http://www.w3school.com.cn/xpath/index.asp什么是XML?XML指可扩展标记语言(EXtensibleMarkupLanguage)XML是一种标记语言,很......
  • WEB漏洞—SQL注入之堆叠及WAF绕过注入
    1、堆叠查询注入stackedinjections(堆叠注入)从名词的含义就可以看到应该是一堆sql语句(多条)一起执行。在sql语句中以; 结束语句mysql>select*fromusers;+----+----------+------------+|id|username|password|+----+----------+------------+|1|Dumb......