Image J:将堆栈保存为GIF动画

时间:2015-11-11 16:11:09

标签: macros animated-gif imagej

我有一些共聚焦显微镜保存为.lsm的图像堆栈,我想写一个宏:

  1. 在文件夹中打开图像
  2. 制作复合,然后叠加到RGB,然后设置动画选项
  3. 将此动画Gif保存到另一个文件夹
  4. 到目前为止我做了什么:

    function stack_to_gif(input, output, filename, fps) {
        open(input + filename);
        run("Make Composite");
        run("Stack to RGB", "slices");
        run("Animation Options...",  "speed=fps");
        run("Animated Gif ... ", "name=title=[Do not use] optional=[] " +
        "image=[No Disposal] set=500 number=-1 transparency=[No Transparency] "     +
        "red=0 green=0 blue=0 index=0 filename=output+filename");
        saveAs("Animated Gif...", output+filename);
        close();
    }
    
    inputDir=getDirectory("Choose an input location");
    outputDir=getDirectory("Choose an output location");
    fps=120;
    
    setBatchMode(true);
    list = getFileList(inputDir);
    for (i = 0; i < list.length; i++){
        stack_to_gif(inputDir, outputDir, list[i], fps);
    }
    setBatchMode(false);
    

    我知道这两个底部部分也可以在我在另一个宏中使用它们。

    我的问题在于saveAs(&#34; Animated Gif ...&#34;)部分,因为它不允许我保存RGB类型,即使它在我手动操作时也能正常工作。 / p>

    到目前为止我尝试了什么:

    • 在saveAs中使用相同的run(&#34; GIF动画...&#34;)选项(&#34; GIF动画...&#34;)
    • 使用其中一个但不是两个
    • 使用run(&#34; 8-bit&#34;);在动画选项之后,它有效(但我失去了颜色)

    让我感到烦恼的是,当我手动操作时,它完全正常,但我收到错误消息

      

    要保存为动画GIF,必须通过Image&gt; Type&gt; 8位颜色命令将堆栈转换为8位索引颜色。

    而且我不知道为什么我自己这样做时不会发生这种情况。

    感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

当我使用宏录制器(插件&gt;宏&gt;记录... )来记录与文件&gt;对应的命令时另存为&gt;动画Gif ...... ,我得到以下命令:

run("Animated Gif ... ", "name=[my new name] set_global_lookup_table_options=[Do not use] optional=[] image=[No Disposal] set=20 number=-1 transparency=[No Transparency] red=0 green=0 blue=0 index=0 filename=/usr/temp/animated.gif");

在您的命令中,部分name=title=[Do not use]似乎是错误的。如果要使用当前图像标题,请使用字符串连接来插入变量的内容:

run("Animated Gif ... ", "name=[" + myTitle + "] set_global_lookup_table_options=[Do not use] optional=[] image=[No Disposal] set=20 number=-1 transparency=[No Transparency] red=0 green=0 blue=0 index=0 filename=/usr/temp/animated.gif");

但无论如何,name参数不需要,因为它将被包含整个文件路径的filename参数覆盖,因此您可以安全地将其保留。

以同样的方式,您可以省略任何与默认值无差异的参数。在我的测试中,这也很有效:

run("Animated Gif ... ", "set=20 filename=/usr/temp/animated.gif");

注意:保存GIF动画时,播放速度仅由设置延迟(以毫秒为单位)参数(在我的示例中为set=20)决定,因此正在运行run("Animation Options...", "speed=fps");对保存的文件没有影响。 (请参阅source codewiki page似乎已经过时/错误。请随意自行更正文档,这是一个维基。)

答案 1 :(得分:1)

我们遇到了同样的问题。您需要更改&#34; set_global_lookup_table_options&#34;中的选项。从[不使用]到[从当前图像加载]。此函数将动画gif中的z-stack保存为50us延迟(设置= 50),并且它可以解决颜色问题。

function animated_gifZ(input, output, filename)
{
open(input + filename);
run("RGB Color", "slices");
run("8-bit Color", "number=256");
run("Animated Gif ... ", "set_global_lookup_table_options=[Load from Current Image]" +
"optional=[] image=[No Disposal] set=50 number=-1 transparency=[No Transparency]" +
"red=0 green=0 blue=0 index=0 filename=output+filename");
saveAs("Animated Gif...", output+filename);
close();
}

如果你想加快速度,你可以使用:

function gifZ(input, output, filename)
{
open(input + filename);
run("RGB Color", "slices");
run("8-bit Color", "number=256");
run("Properties...", "frame=[0.1 sec]");
saveAs("Gif", output+filename);
close();
}

希望它有所帮助。