如何将tiff转成金字塔格式tiff

因课题需要处理tiff格式的病理切片文件,在用openslide读取时发现tiff只有一个最大分辨率下的level dimension,不方便后续处理。

因此需要将tiff改成openslide支持的generic tiled tiff,具体步骤如下:

根据官方引导下载vips,博主用的MacOS,所以直接brew install vips就可以了嘿嘿

下载成功后在命令行输入

vips tiffsave input.tif output.tif —-compression jpeg —-tile —-pyramid

input.tif对应原tif文件的路径,output.tif对应生成文件的路径

为方便批量转换,简单写了个shell脚本

#!/bin/zsh

for FILE in $(ls ori_tif_dir)
do
	input_file="./ori_tif_dir/${FILE}"
	output_file="./new_tif_dir/${FILE}"
	# echo ${input_file}
	echo "${FILE} is processing..."
	vips tiffsave ${input_file} ${output_file} --compression jpeg --tile --pyramid
done

另:如果tiff本身就已经是金字塔格式,只想把它从opslide.imageslide改成opslide.openslide,则可以用如下命令(作者的终端默认的是zsh的shell,所以添加了双引号)

vips openslideload input.tif “output.tif[tile,compression=jpeg]”

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

一年之后更新一下,为方便win系统和python使用,分别提供以上两个功能命令可直接在win下运行的python代码(感谢爱喝奶盖的SONG友情提供)

# tif转金字塔

import os, subprocess
for root, dirs, files in os.walk("path/to/old_tif_dir", topdown=False):
    for name in files:
        if name[0] != '.' and name[-1] != 'l':
            file = os.path.join(root, name)
            output_file = 'path/to/new_tif_dir/' + name
            command = 'path/to/vips_dir/vips-dev-w64-all-8.15.0/vips-dev-8.15/bin/vips.exe tiffsave '+ file + ' ' + output_file +' --tile --compression jpeg'
            try:
                subprocess.run(command, check=True, shell=True)
                print(file+' is done!')
            except:
                print('Wrong')
# openslide.imageslide 转 openslide.openslide

import os, subprocess
for root, dirs, files in os.walk("path/to/old_tif_dir", topdown=False):
    for name in files:
        if name[0] != '.' and name[-1] != 'l':
            file = os.path.join(root, name)
            output_file = 'path/to/new_tif_dir/' + name
            command = 'path/to/vips_dir/vips-dev-w64-all-8.15.0/vips-dev-8.15/bin/vips.exe openslideload '+ file + ' ' + output_file +'[tile,compression=jpeg]'
            try:
                subprocess.run(command, check=True, shell=True)
                print(file+' is done!')
            except:
                print('Wrong')

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值