import io
from tornado.web import Application, RequestHandler
from tornado.ioloop import IOLoop
from openslide import OpenSlide
from openslide.deepzoom import DeepZoomGenerator
from PIL import Image, ImageOps
class SlideHandler(RequestHandler):
def initialize(self, slide):
tile_size = 256 # 每个瓦片的大小
overlap = 0 # 瓦片之间的重叠像素
limit_bounds = False # 是否限制瓦片在图像边界内
self.dz = DeepZoomGenerator(slide, tile_size=tile_size, overlap=overlap, limit_bounds=limit_bounds)
def get(self, z, x, y):
z = int(z)
x = int(x)
y = int(y)
tile_size = 256
try:
# 获取指定层级的瓦片
tile = self.dz.get_tile(z, (x, y))
# 获取原始图像的宽度和高度
original_width, original_height = tile.size
# 如果图像已经是256x256,不需要填充
if original_width == tile_size and original_height == tile_size:
padded_tile = tile
else:
# 创建一个新的256x256的黑色背景图像
padded_tile = Image.new("RGB", (tile_size, tile_size), color=(0, 0, 0))
# 将原图像粘贴到新的黑色背景图像上
padded_tile.paste(tile, (0, 0))
# tile = tile.convert("RGB")
# tile = ImageOps.pad(tile, (tile_size, tile_size), color="black", centering=(0, 0))
# 将瓦片图像转换为JPEG格式并返回
output = io.BytesIO()
tile = padded_tile
tile.save(output, format="JPEG")
self.set_header("Content-Type", "image/jpeg")
self.write(output.getvalue())
except ValueError:
# 请求超出图像边界,返回404错误
self.send_error(404)
def make_app():
slide = OpenSlide('test.svs') # 加载SVS文件
return Application([
(r"/tiles/([0-9]+)/([0-9]+)/([0-9]+)", SlideHandler, dict(slide=slide)),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
IOLoop.current().start()
没有合适的资源?快使用搜索试试~ 我知道了~
python前后端分离实现svs医学影像在线预览
共2个文件
py:1个
html:1个
需积分: 0 0 下载量 141 浏览量
2024-08-23
16:03:56
上传
评论
收藏 2KB ZIP 举报
温馨提示
1、python前后端,openslide+openseadragon实现svs医学影像在线预览,放大缩小。 2、前端文件的width、height、maxLevel需要先使用后端调试获取,self.dz.level_dimensions获取到最大分辨率,self.dz.level_count获取到最大level。 3、这里只是一个demo,请根据自己项目进行更改。
资源推荐
资源详情
资源评论
收起资源包目录
slide_svs.zip (2个子文件)
openseadragon.html 1KB
server5.py 2KB
共 2 条
- 1
资源评论
魂归大海
- 粉丝: 117
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功