编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

病理SVS格式图片如何在浏览器上展示-之python方案

wxchong 2024-12-19 16:55:15 开源技术 209 ℃ 0 评论

前言

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

细胞图片长这样:

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

解决方案

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

openslide

此方案这里不在赘述,我测试过,加载了一个300多兆的svs图,运行时直接崩了。因为过程繁琐,太耗内存,就此作罢。感兴趣的同学可以自行实验。官网地址在此: OpenSlide

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文件地址,就可以显示了。

前端代码不再这里追溯。参考文档:DZI Tile Source | OpenSeadragon

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表