病理图片svs格式在web上的呈现--python方案

前言

接了个项目,需要将病理细胞图片svs格式的图片显示在前端页面上。找遍网络,有不可行的,有可行但却有bug的。在此整理份完整可行的方案,供大家参考。

细胞图片长这样:
此类svs图片一般大小在几百兆到几个G之间,着实很大,浏览器无法加载。pc一般是通过桌面软件加载查看的。

解决方案

解决方案有两种常见的方案:

  1. openslide
    此方案这里不在赘述,我测试过,加载了一个300多兆的svs图,运行时直接崩了。因为过程繁琐,太耗内存,就此作罢。感兴趣的同学可以自行实验。官网地址在此: openslide
  2. libvips
    此方案是我们这次要用到的。通过安装此库文件,把svs转换后即可显示。

开干吧!

1.安装 pyvips
pip install pyvips

注意 :如果这时候直接这样写代码

import pyvips

这样是会报错的。
在这里插入图片描述
以上是windows的报错,linux也会有相似的报错。这是因为没有加载 libgobject 库文件。

2. 加载 libgobject 库文件

linux系统很简单:

sudo apt install libvips

windows系统就复杂点了

  • 下载一个库文件 vips-dev
    下载地址:https://github.com/libvips/build-win64-mxe/releases
    我下载的是 v8.14.3版本
    在这里插入图片描述
    下载完后解压
  • 找到你的python安装目录,或虚拟环境的目录,打开这个目录:
    在这里插入图片描述
    我是虚拟目录,所以在venv目录里。然后打开 _init_.py文件,在开头添加如下代码
import logging
import os
# =========在这里添加如下代码(vipshome地址是上面解压的文件所在的路径)========
vipshome = r'D:\PycharmProjects\njzl\install_package\vips-dev-8.14\bin'
os.environ['PATH'] = vipshome + ';' + os.environ['PATH']
#=======结束=======
import sys
import atexit

logger = logging.getLogger(__name__)

# user code can override this null handler
logger.addHandler(logging.NullHandler())

保存后在看下,是不不报错了

3. 开始写代码了
# 加载svs
 img = pyvips.Image.new_from_file('static/files/1.svs', access='sequential')
# 生成dzi文件
 img.dzsave('static/files/2')

加载svs文件,然后生成 dzi 文件。
dzi 文件是类似地图的瓦片文件,就是按层级分割成不同大小的图片,然后组合成一张大图。文件像下面这样:
在这里插入图片描述
2_files 如下:
在这里插入图片描述
这样的文件,前端是可以加载显示的。

4.前端如何加载

前端vue 安装导入 openseadragon 库文件,然后加载远程dzi文件地址,就可以显示了。
前端代码不再这里追溯。参考文档:openseadragon

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值