我有一些共聚焦显微镜保存为.lsm的图像堆栈,我想写一个宏:
到目前为止我做了什么:
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>
到目前为止我尝试了什么:
让我感到烦恼的是,当我手动操作时,它完全正常,但我收到错误消息
要保存为动画GIF,必须通过Image&gt; Type&gt; 8位颜色命令将堆栈转换为8位索引颜色。
而且我不知道为什么我自己这样做时不会发生这种情况。
感谢您的帮助。
答案 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 code。wiki 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();
}
希望它有所帮助。