经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 编程经验 » 查看文章
高分辨率大图像可缩放 Web 查看器的实践
来源:cnblogs  作者:飞仔FeiZai  时间:2023/6/2 10:51:35  对本文有异议

高分辨率大图像可缩放 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

    1. pip install pyvips

    pyvips API 参考文档:pyvips

  3. 生成 DZI

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

    dzsave 参数说明:

    • 第一个参数为 DZI 文件夹的路径,将在此处生成 DZI 文件。
    • suffix:生成的 DZI 图像文件的后缀名。
    • tile_size:DZI 图像的瓷砖大小。
    • overlap:DZI 图像的瓷砖之间的重叠区域大小。

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

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

  1. from flask import Flask, send_from_directory
  2. app = Flask(__name__)
  3. @app.route('/<path:path>')
  4. def static_file(path):
  5. return send_from_directory('.', path)
  6. if __name__ == '__main__':
  7. app.run(port=8008)

三、使用 OpenSeadragon 实现 Web 访问

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

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>Big Image Viewer</title>
  6. <script src="./openseadragon/openseadragon.min.js"></script>
  7. <style type="text/css">
  8. html,
  9. body,
  10. .openseadragon-ctr {
  11. width: 100%;
  12. height: 100%;
  13. margin: 0;
  14. background-color: #111;
  15. }
  16. </style>
  17. </head>
  18. <body>
  19. <div id="contentDiv" class="openseadragon-ctr"></div>
  20. <script type="text/javascript">
  21. OpenSeadragon({
  22. id: "contentDiv",
  23. prefixUrl: "openseadragon/images/",
  24. showNavigator: false,
  25. navigatorPosition: "BOTTOM_LEFT",
  26. tileSources: {
  27. Image: {
  28. xmlns: "http://schemas.microsoft.com/deepzoom/2008",
  29. // 生成的 DZI 文件 HTTP 访问路径
  30. Url: "../mydz_files/",
  31. Format: "jpg",
  32. Overlap: "1",
  33. TileSize: "512",
  34. Size: {
  35. Height: "3971",
  36. Width: "73364",
  37. },
  38. },
  39. },
  40. });
  41. </script>
  42. </body>
  43. </html>

查看效果:

  1. 初始状态

    img

  2. 放大状态

    img

原文链接:https://www.cnblogs.com/yuzhihui/p/17448525.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号