Mac终端Bash脚本实现遍历图片调用Java Jar文件的需求
没问题!我帮你写一个能直接用的Bash脚本,而且会一步步解释每个部分,保证完全不懂Bash的你也能看懂~
针对DeconvolutionLab_2的批量图像处理脚本
先给你一个可以直接使用的完整脚本,之后我会逐行拆解每个部分的作用:
#!/bin/bash # -------------------------- 请先修改这里的参数 -------------------------- PSF_FILE="/thisfilestaysconstant/your_psf_file.tif" # 替换成你的PSF文件实际完整路径 JAR_FILE="./DeconvolutionLab_2.jar" # 如果Jar不在脚本同目录,就写绝对路径(比如/Users/xxx/DeconvolutionLab_2.jar) IMAGE_FOLDER="/Users/myimagedirectory" # 你的图片所在文件夹的完整路径 ALGORITHM_SETTING="TRIF 0.2" # 算法参数,和你给的示例一致 JAVA_MEMORY="-Xms12288m" # 分配给Java的内存,示例是12G,不用改除非内存不足 # ----------------------------------------------------------------------- # 遍历文件夹里的所有TIFF图片(如果是其他格式,把*.tif改成*.png/*.jpg等) for image_path in "$IMAGE_FOLDER"/*.tif; do # 跳过不存在的文件(比如文件夹里没有对应格式图片时,避免报错) [ -e "$image_path" ] || continue # 提取不带路径的原文件名(比如从/Users/xxx/abc.tif得到abc.tif) original_filename=$(basename "$image_path") # 生成输出文件名:给原文件名加_deconv后缀(比如abc.tif → abc_deconv.tif) output_filename="${original_filename%.tif}_deconv.tif" # 打印当前处理进度,方便你跟踪 echo "正在处理图片:$original_filename" # 调用Jar文件执行反卷积处理 java $JAVA_MEMORY -jar "$JAR_FILE" Run -image file "$image_path" -psf file "$PSF_FILE" -algorithm $ALGORITHM_SETTING -out stack float "$output_filename" -path home done echo "✅ 所有图片处理完成!"
小白友好的脚本解释
开头的参数定义区:
这部分是你唯一需要手动修改的地方,把所有固定的路径和参数都集中在这里,不用去碰后面的循环代码:PSF_FILE:你的固定PSF文件的完整路径,比如/Users/Sparky_47/Documents/psf_sample.tifJAR_FILE:如果DeconvolutionLab_2.jar和脚本放在同一个文件夹,就用./DeconvolutionLab_2.jar;如果不在,就写完整的绝对路径IMAGE_FOLDER:你的图片所在文件夹的路径,就是你原来写的/Users/myimagedirectory- 剩下的
ALGORITHM_SETTING和JAVA_MEMORY和你给的示例一致,不用改除非有特殊需求
循环遍历图片:
for image_path in "$IMAGE_FOLDER"/*.tif:这句是告诉脚本“把指定文件夹里所有后缀为.tif的图片都找出来,逐个处理”。如果你的图片是PNG/JPG格式,把*.tif改成*.png或*.jpg就行[ -e "$image_path" ] || continue:防止文件夹里没有对应格式图片时脚本报错,相当于“如果找不到文件,就跳过这次循环”
生成输出文件名:
original_filename=$(basename "$image_path"):提取纯文件名(去掉前面的文件夹路径),方便后续命名输出文件output_filename="${original_filename%.tif}_deconv.tif":把原文件名的.tif后缀去掉,加上_deconv.tif作为输出文件名,这样每个输出文件都能和原文件一一对应,不会混乱
执行处理命令:
echo "正在处理图片:$original_filename":在终端打印当前处理的文件名,让你能看到进度- 最后的
java命令:就是你给的示例命令,只是把固定参数换成了我们定义的变量,输入图片路径换成了当前循环的$image_path,输出文件名换成了$output_filename
脚本使用步骤
- 保存脚本:打开Mac的「文本编辑」,复制上面的脚本进去,点击「文件」→「存储」,文件名比如叫
batch_deconv.sh,保存格式一定要选「纯文本」(不要选RTF),建议把脚本和DeconvolutionLab_2.jar放在同一个文件夹里 - 给脚本加执行权限:打开终端,先进入脚本所在的文件夹(比如
cd /Users/Sparky_47/Documents/DeconvTool),然后输入命令:chmod +x batch_deconv.sh - 运行脚本:在终端里输入
./batch_deconv.sh,回车就开始批量处理了!
如果遇到问题,比如提示找不到Jar文件,就检查JAR_FILE的路径是不是写对了;如果图片没被遍历到,就检查IMAGE_FOLDER和图片格式是不是匹配。
内容的提问来源于stack exchange,提问作者Sparky_47
相关产品推荐
相关产品推荐

