You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 "✅ 所有图片处理完成!"

小白友好的脚本解释

  1. 开头的参数定义区:
    这部分是你唯一需要手动修改的地方,把所有固定的路径和参数都集中在这里,不用去碰后面的循环代码:

    • PSF_FILE:你的固定PSF文件的完整路径,比如/Users/Sparky_47/Documents/psf_sample.tif
    • JAR_FILE:如果DeconvolutionLab_2.jar和脚本放在同一个文件夹,就用./DeconvolutionLab_2.jar;如果不在,就写完整的绝对路径
    • IMAGE_FOLDER:你的图片所在文件夹的路径,就是你原来写的/Users/myimagedirectory
    • 剩下的ALGORITHM_SETTING和JAVA_MEMORY和你给的示例一致,不用改除非有特殊需求
  2. 循环遍历图片:

    • for image_path in "$IMAGE_FOLDER"/*.tif:这句是告诉脚本“把指定文件夹里所有后缀为.tif的图片都找出来,逐个处理”。如果你的图片是PNG/JPG格式,把*.tif改成*.png或*.jpg就行
    • [ -e "$image_path" ] || continue:防止文件夹里没有对应格式图片时脚本报错,相当于“如果找不到文件,就跳过这次循环”
  3. 生成输出文件名:

    • original_filename=$(basename "$image_path"):提取纯文件名(去掉前面的文件夹路径),方便后续命名输出文件
    • output_filename="${original_filename%.tif}_deconv.tif":把原文件名的.tif后缀去掉,加上_deconv.tif作为输出文件名,这样每个输出文件都能和原文件一一对应,不会混乱
  4. 执行处理命令:

    • echo "正在处理图片:$original_filename":在终端打印当前处理的文件名,让你能看到进度
    • 最后的java命令:就是你给的示例命令,只是把固定参数换成了我们定义的变量,输入图片路径换成了当前循环的$image_path,输出文件名换成了$output_filename

脚本使用步骤

  1. 保存脚本:打开Mac的「文本编辑」,复制上面的脚本进去,点击「文件」→「存储」,文件名比如叫batch_deconv.sh,保存格式一定要选「纯文本」(不要选RTF),建议把脚本和DeconvolutionLab_2.jar放在同一个文件夹里
  2. 给脚本加执行权限:打开终端,先进入脚本所在的文件夹(比如cd /Users/Sparky_47/Documents/DeconvTool),然后输入命令:chmod +x batch_deconv.sh
  3. 运行脚本:在终端里输入./batch_deconv.sh,回车就开始批量处理了!

如果遇到问题,比如提示找不到Jar文件,就检查JAR_FILE的路径是不是写对了;如果图片没被遍历到,就检查IMAGE_FOLDER和图片格式是不是匹配。

内容的提问来源于stack exchange,提问作者Sparky_47

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:27:51