CINXE.COM

Script Parameters

<!DOCTYPE html> <html> <head> <title>Script Parameters</title> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=3" /> <meta content="ImageJ Wiki" property="og:site_name"> <meta content="Script Parameters" property="og:title"> <meta content="article" property="og:type"> <meta content="The ImageJ wiki is a community-edited knowledge base on topics relating to ImageJ, a public domain program for processing and analyzing scientific images, and its ecosystem of derivatives and variants, including ImageJ2, Fiji, and others." property="og:description"> <meta content="https://imagej.github.io/scripting/parameters" property="og:url"> <meta content="https://imagej.github.io/media/icons/imagej2.png" property="og:image"> <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"> <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> <link rel="manifest" href="/site.webmanifest"> <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5"> <meta name="msapplication-TileColor" content="#da532c"> <meta name="theme-color" content="#ffffff"> <link rel="stylesheet" href="/assets/css/lightbox.min.css" /> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.css@7/themes/algolia-min.css"/> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/dygraphs@2.1.0/dist/dygraph.min.js"></script> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/dygraphs@2.1.0/dist/dygraph.min.css" /> <link rel="stylesheet" href="/assets/css/main.css" /> <link rel="stylesheet" href="/assets/css/layout.css"/> <link rel="stylesheet" href="/assets/css/includes.css" /> <link rel="stylesheet" href="/assets/css/timeline.css"/> <link rel="stylesheet" href="/assets/css/dock.css"/> <noscript><link rel="stylesheet" href="/assets/css/noscript.css" /></noscript> <link rel="stylesheet" href="/assets/css/page.css" /> </head> <body class="is-preload"> <!-- Top bar --> <section id="top-bar"> <a href="/"><img id="site-logo" src="/media/icons/imagej2.png"></a> <div id="search-panel"> <div id="search-box"></div> </div> </section> <!-- Page-info --> <div class="page-info"> <a href="https://github.com/imagej/imagej.github.io/commits/main/_pages/scripting/parameters.md">Page history</a> <a href="https://github.com/imagej/imagej.github.io/edit/main/_pages/scripting/parameters.md">Edit this page</a> <a href="/editing">How do I edit this website?</a></div> <section id="left-column" class="sidebar dock"> <!-- Menu --> <div class="menu dockable"> <div class="drag-handle"></div><h3>ImageJ Docs</h3> <ul> <li><a href="/downloads">Download</a></li> <li><details><summary>Learn</summary><ul> <li><details><summary><a href="/learn">ImageJ Basics</a></summary><ul> <li><a href="/tutorials">Tutorials</a></li> <li><a href="/learn/user-guides">User Guides</a></li> <li><a href="/learn/keyboard-shortcuts">Keyboard Shortcuts</a></li> <li><a href="/learn/tips-and-tricks">Tips and Tricks</a></li> <li><a href="/learn/troubleshooting">Troubleshooting</a></li> <li><a href="/learn/faq">Frequently Asked Questions</a></li> <li><details><summary><a href="/platforms">Supported Platforms</a></summary><ul> <li><a href="/platforms/windows">Windows</a></li> <li><a href="/platforms/macos">MacOS</a></li> <li><a href="/platforms/linux">Linux</a></li> <li><a href="/platforms/pi">Raspberry Pi</a></li> <li><a href="/platforms/android">Android</a></li> </ul></details></li> <!-- Learn/ImageJ Basics/Supported Platforms --> <li><details><summary><a href="/formats">File Formats</a></summary><ul> <li><a href="/formats/bio-formats">Bio-Formats</a></li> <li><a href="/formats/video">Video formats</a></li> <li><a href="/formats/quicktime">QuickTime</a></li> <li><a href="/formats/tiff">TIFF</a></li> <li><a href="/formats/pdf">PDF</a></li> <li><a href="/formats/dicom">DICOM</a></li> <li><a href="/formats/lsm">Zeiss LSM</a></li> <li><a href="/formats/olympus">Olympus VSI</a></li> <li><a href="/formats/lurawave">Opera Flex</a></li> <li><a href="/formats/fib-sem">FIB-SEM</a></li> </ul></details></li> <!-- Learn/ImageJ Basics/File Formats --> </ul></details></li> <!-- Learn/ImageJ --> <li><details><summary><a href="/imaging">Scientific Imaging</a></summary><ul> <li><a href="/imaging/principles">Principles of Scientific Imaging</a></li> <li><a href="/imaging/annotating-images">Annotating Images</a></li> <li><a href="/imaging/colocalization-analysis">Colocalization</a></li> <li><a href="/imaging/color-image-processing">Color Image Processing</a></li> <li><a href="/imaging/deconvolution">Deconvolution</a></li> <li><a href="/imaging/image-intensity-processing">Image Intensity Processing</a></li> <li><a href="/imaging/particle-analysis">Particle Analysis</a></li> <li><a href="/imaging/registration">Registration</a></li> <li><a href="/imaging/segmentation">Segmentation</a></li> <li><a href="/imaging/stack-slice-manipulations">Stack-slice Manipulations</a></li> <li><a href="/imaging/t-functions">T-functions</a></li> <li><a href="/imaging/tracking">Tracking</a></li> <li><a href="/imaging/visualization">Visualization</a></li> <li><a href="/imaging/z-functions">Z-functions</a></li> </ul></details></li> <!-- Learn/Scientific Imaging --> </ul></details></li> <!-- Learn --> <li><details open><summary><a href="/plugins">Extend</a></summary><ul> <li><a href="/list-of-extensions">List of Extensions</a></li> <li><details><summary><a href="/update-sites">Update Sites</a></summary><ul> <li><a href="/list-of-update-sites">List of Update Sites</a></li> <li><a href="/update-sites/following">Following an Update Site</a></li> <li><a href="/update-sites/setup">Creating an Update Site</a></li> <li><a href="/update-sites/tos">Terms of Service</a></li> <li><a href="/update-sites/automatic-uploads">Automatic Upload</a></li> <li><a href="/update-sites/core-uploads">Uploading to Core Sites</a></li> <li><a href="/update-sites/faq">Update Sites FAQ</a></li> <li><a href="/update-sites/stats">Statistics</a></li> </ul></details></li> <!-- Extend/Update Sites --> <li><details open><summary><a href="/scripting">Scripting</a></summary><ul> <li><a href="/scripting/basics">Scripting Basics</a></li> <li><a href="/scripting/script-editor">Script Editor</a></li> <li><a class="current-page">Parameters</a></li> <li><a href="/scripting/user-input">User Input</a></li> <li><a href="/scripting/auto-imports">Auto Import</a></li> <li><a href="/scripting/templates">Templates</a></li> <li><a href="/scripting/batch">Batch Processing</a></li> <li><a href="/scripting/headless">Running Headlessly</a></li> <li><a href="/scripting/comparisons">Scripting Comparisons</a></li> <li><a href="/scripting/toolbox">Toolbox</a></li> <li><details><summary>Languages</summary><ul> <li><a href="/scripting/beanshell">BeanShell Scripting</a></li> <li><a href="/scripting/groovy">Groovy Scripting</a></li> <li><a href="/scripting/macro">ImageJ Macro</a></li> <li><a href="/scripting/javascript">JavaScript</a></li> <li><a href="/scripting/clojure">Lisp (Clojure)</a></li> <li><a href="/scripting/matlab">MATLAB</a></li> <li><a href="/scripting/jython">Python (Jython)</a></li> <li><a href="/scripting/python">Python (native)</a></li> <li><a href="/scripting/renjin">R (Renjin)</a></li> <li><a href="/scripting/jruby">Ruby (JRuby)</a></li> <li><a href="/scripting/scala">Scala Scripting</a></li> </ul></details></li> <!-- Extend/Scripting/Languages --> </ul></details></li> <!-- Extend/Scripting --> <li><details><summary><a href="/develop">Development</a></summary><ul> <li><a href="/develop/philosophy">Philosophy</a></li> <li><a href="/develop/architecture">Architecture</a></li> <li><a href="/develop/source">Source code</a></li> <li><a href="/develop/project-management">Project management</a></li> <li><a href="/develop/coding-style">Coding style</a></li> <li><a href="/develop/javadoc">Using Javadoc</a></li> <li><a href="/develop/debugging">Debugging</a></li> <li><a href="/develop/wish-list">Wish list</a></li> <li><details><summary>Tools</summary><ul> <li><a href="/develop/github">GitHub</a></li> <li><a href="/develop/maven">Maven</a></li> <li><a href="/develop/ci">CI/CD</a></li> <li><a href="/develop/dotfiles">Dotfiles</a></li> <li><details><summary><a href="/develop/ides">IDEs</a></summary><ul> <li><a href="/develop/eclipse">Eclipse</a></li> <li><a href="/develop/netbeans">NetBeans</a></li> <li><a href="/develop/intellij">IntelliJ IDEA</a></li> <li><a href="/develop/command-line">Command Line</a></li> </ul></details></li> </ul></details></li> <!-- Extend/Development/Tools --> <li><details><summary>Guides</summary><ul> <li><a href="/develop/plugins">Writing plugins</a></li> <li><a href="/develop/improving-the-code">Contributing to a plugin</a></li> <li><a href="/develop/releasing">Development lifecycle</a></li> <li><a href="/develop/building-a-pom">Building a POM</a></li> <li><a href="/develop/debugging-exercises">Hands-on debugging</a></li> <li><a href="/develop/writing-ops">Adding new ops</a></li> <li><a href="/develop/formats">Adding new formats</a></li> <li><a href="/develop/native-libraries">Using native libraries</a></li> <li><a href="/develop/tips">Tips for developers</a></li> <li><a href="/develop/cpp-tips">Tips for C++ developers</a></li> <li><a href="/develop/ij1-plugins">ImageJ 1.x plugins</a></li> <li><a href="/develop/versioning">Versioning</a></li> <li><a href="/develop/logging">Logging</a></li> <li><a href="/develop/uber-jars">Uber-JARs</a></li> </ul></details></li> <!-- Extend/Development/Guides --> <li><details><summary><a href="/develop/git">Git</a></summary><ul> <li><a href="/develop/git/eclipse">Git in Eclipse (EGit)</a></li> <li><a href="/develop/git/mini-howto">Git mini howto</a></li> <li><a href="/develop/git/workshop">Git workshop</a></li> <li><a href="/develop/git/conflicts">Git conflicts</a></li> <li><a href="/develop/git/topic-branches">Git topic branches</a></li> <li><a href="/develop/git/notes">Git notes</a></li> <li><a href="/develop/git/reflogs">Git reflogs</a></li> <li><a href="/develop/git/submodules">Git submodules</a></li> <li><a href="/develop/git/pinpoint-regressions">How to pinpoint regressions</a></li> <li><a href="/develop/git/publish-a-repository">How to publish a git repository</a></li> <li><a href="/develop/git/extract-a-subproject">How to extract a subproject</a></li> </ul></details></li> <!-- Extend/Development/Git --> </ul></details></li> <!-- Extend/Development --> </ul></details></li> <!-- Extend --> <li><details><summary><a href="/contribute">Contribute</a></summary><ul> <li><a href="/contribute/citing">Citing</a></li> <li><a href="/people">Contributors</a></li> <li><a href="/orgs">Organizations</a></li> <li><a href="/contribute/governance">Governance</a></li> <li><a href="/contribute/funding">Funding</a></li> <li><a href="/contribute/fiji">Contributing to Fiji</a></li> <li><details><summary><a href="/licensing">Licensing</a></summary><ul> <li><details><summary><a href="/licensing/open-source">Open Source</a></summary><ul> <li><a href="/licensing/apache">Apache</a></li> <li><a href="/licensing/bsd">BSD</a></li> <li><a href="/licensing/epl">EPL</a></li> <li><a href="/licensing/gpl">GPL</a></li> <li><a href="/licensing/lgpl">LGPL</a></li> <li><a href="/licensing/mit">MIT</a></li> <li><a href="/licensing/public-domain">Public domain</a></li> <li><a href="/licensing/big">BIG</a></li> </ul></details></li> <!-- Contribute/Licensing/Open Source --> <li><a href="/licensing/closed-source">Proprietary</a></li> </ul></details></li> <!-- Contribute/Licensing --> <li><details><summary><a href="/editing">Editing the Wiki</a></summary><ul> <li><a href="/editing/advanced">Advanced Editing</a></li> <li><a href="/editing/buttons">Buttons</a></li> <li><a href="/editing/citations">Citations</a></li> <li><a href="/editing/code">Source Code</a></li> <li><a href="/editing/debugging">Debugging</a></li> <li><a href="/editing/headers">Headers</a></li> <li><a href="/editing/icons">Icons</a></li> <li><a href="/editing/images">Images</a></li> <li><a href="/editing/keys">Keyboard Shortcuts</a></li> <li><a href="/editing/linking">Linking</a></li> <li><a href="/editing/math">Math Expressions</a></li> <li><a href="/editing/menu-paths">Menu Paths</a></li> <li><a href="/editing/navigation">Navigation</a></li> <li><a href="/editing/notices">Notices</a></li> <li><a href="/editing/people">People</a></li> <li><a href="/editing/pitfalls">Pitfalls</a></li> <li><a href="/editing/quizzes">Quizzes</a></li> <li><a href="/editing/statbox">Statbox</a></li> <li><a href="/editing/symbols">Symbols</a></li> <li><a href="/editing/tables">Tables</a></li> <li><a href="/editing/timelines">Timelines</a></li> <li><a href="/editing/tooltips">Tooltips</a></li> <li><a href="/editing/videos">Videos</a></li> <li><a href="/editing/whitespace">Whitespace</a></li> </ul></details></li> <!-- Contribute/Editing the Wiki --> </ul></details></li> <!-- Contribute --> <li><details><summary><a href="/discuss">Discuss</a></summary><ul> <li><a href="/discuss/bugs">Reporting Issues</a></li> <li><a href="/discuss/mailing-lists">Mailing Lists</a></li> <li><a href="/discuss/chat">Chat</a></li> </ul></details></li> <!-- Discuss --> <li><details><summary>Explore</summary><ul> <li><a href="/news">News</a></li> <li><details><summary><a href="/events">Events</a></summary><ul> <li><a href="/events/presentations">Presentations</a></li> <li><a href="/events/conferences">Conferences</a></li> <li><a href="/events/hackathons">Hackathons</a></li> <li><a href="/events">More...</a></li> </ul></details></li> <!-- Discuss/Events --> <li><details><summary><a href="/libs">Libraries</a></summary><ul> <li><a href="/libs/imagej-ops">ImageJ Ops</a></li> <li><a href="/libs/imagej-common">ImageJ Common</a></li> <li><a href="/libs/imagej-legacy">ImageJ Legacy</a></li> <li><a href="/libs/scijava">SciJava</a></li> <li><a href="/libs/scifio">SCIFIO</a></li> <li><details><summary><a href="/libs/imglib2">ImgLib2</a></summary><ul> <li><a href="/libs/imglib2/getting-started">Getting Started</a></li> <li><a href="/libs/imglib2/accessors">Accessors</a></li> <li><a href="/libs/imglib2/accessibles">Accessibles</a></li> <li><a href="/libs/imglib2/examples">Examples</a></li> <li><a href="/libs/imglib2/workshop-introductory">Introductory Workshop</a></li> <li><a href="/libs/imglib2/workshop-advanced">Advanced Workshop</a></li> <li><a href="/libs/imglib2/matlab">ImgLib2 images in MATLAB</a></li> <li><a href="/libs/imglib2/benchmarks">Benchmarks</a></li> <li><a href="/libs/imglib2/faq">FAQ</a></li> <li><a href="/libs/imglib2/developing">Developing ImgLib2</a></li> <li><a href="/libs/imglib2/discussion">ImgLib2 Discussion</a></li> </ul></details></li> <!-- Explore/Libraries/ImgLib2 --> <li><a href="/libs">More...</a></li> </ul></details></li> <!-- Explore/Libraries --> <li><details><summary><a href="/software">Software</a></summary><ul> <li><a href="/software/nih-image">NIH Image</a></li> <li><a href="/software/imagej">ImageJ</a></li> <li><a href="/software/imagej2">ImageJ2</a></li> <li><a href="/software/fiji">Fiji</a></li> <li><a href="/software">More...</a></li> </ul></details></li> <!-- Explore/Software --> </ul></details></li> <!-- Explore --> </ul> </div> </section> <section id="right-column" class="sidebar dock"> <!-- Vital stats --> <!-- Table of contents --> <div id="toc" class="toc menu dockable"> <div class="drag-handle"></div> <h3>Page contents</h3> <ul data-toc="#content" data-toc-headings="h1,h2,h3,h4,h5,h6"></ul> </div> </section> <!-- Page title --> <div class="container"> <header class="major special"> <a class="project-icon shadowed-box" href="/software/imagej2"><span class="tooltip"><img src="/media/icons/imagej2.png"><span class="tooltiptext" style="top: 80%; left: 25%; width: 20em">This page describes content relating to the ImageJ2 platform. Click the logo for details.</span></span></a> <h1>Script Parameters</h1> <span class="project-counterweight"> </span> </header> </div> <!-- Nav bar --> <!-- Main content --> <section id="page" class="main style1"> <div class="container"> <div class="box alt"></div> <div id="content" class="page-content"> <p>All scripting languages have access to a universal <code class="language-plaintext highlighter-rouge">#@parameter</code> notation for declaring inputs and outputs. This approach is preferred over the original <a href="/software/imagej">ImageJ</a>’s <a href="/scripting/generic-dialog">GenericDialog</a> because it is totally agnostic of the user interface, allowing such scripts to run in a variety of contexts. As with <a href="/develop/plugins">ImageJ2 plugins</a>, script parameterization is based on the <a href="/libs/scijava">SciJava</a> <a href="https://github.com/scijava/scijava-common/blob/scijava-common-2.40.0/src/main/java/org/scijava/plugin/Parameter.java">parameter annotation</a>—so experience with plugin writing directly translates to scripting, and vice versa.</p> <div class="notice" style="font-size: 2; background: #ebf2f8; border-left: 10px solid #67a1fe"><div class="notice-icon"><img src="/media/icons/info.svg" width="32" /></div><div class="notice-content"><p>Script parameters are a feature of <a href="/software/imagej2">ImageJ2</a>; they will not work in the original <a href="/software/imagej">ImageJ</a>. The <a href="/software/fiji">Fiji</a> distribution of ImageJ is built on ImageJ2, so they also work in Fiji.</p> </div> </div> <h2 id="basic-syntax">Basic syntax</h2> <aside class="sidebox"> <div><p><img src="https://gravatar.com/avatar/9e4ed4484fd425f3f178bfeed4777b31" style="float: left; margin-right: 0.5em" width="64" height="64" /><span>zomg UIs are so easy now<br /> done by lunchtime</span><br />—<span>Kyle Harrington, Clojure developer <span style="font-size: smaller">[<a href="https://gitter.im/fiji/fiji?at=5717afbc98c544f1396cef2f">Source</a>]</span></span></p> </div> </aside> <p>The rules for <code class="language-plaintext highlighter-rouge">#@</code> parameter use are as follows:</p> <ol> <li>Parameter declarations begin with <code class="language-plaintext highlighter-rouge">#@</code>. Each such line contains a single parameter declaration or script directive and nothing else.</li> <li><code class="language-plaintext highlighter-rouge">#@ Type variableName</code> will declare an input of the indicated type, assigned to the specified name. (The use of a space between <code class="language-plaintext highlighter-rouge">#@</code> and <code class="language-plaintext highlighter-rouge">Type</code> is encouraged, but not required.)</li> <li><code class="language-plaintext highlighter-rouge">#@output Type outputName</code> will declare the variable of the specified name as an output parameter with the given type. The <code class="language-plaintext highlighter-rouge">Type</code> parameter is optional, as the output will be treated as <code class="language-plaintext highlighter-rouge">Object</code> be default. (For the <code class="language-plaintext highlighter-rouge">output</code> directive and other script directives, no space is allowed between <code class="language-plaintext highlighter-rouge">#@</code> and the directive.)</li> </ol> <p>For example, if we look at the <a href="https://github.com/scijava/scripting-jython/blob/scripting-jython-0.2.0/src/main/resources/script_templates/Python/Greeting.py">Greeting.py</a> <a href="/scripting/templates">template</a> supplied with Fiji:</p> <script src="https://emgithub.com/embed.js?target=https%3A%2F%2Fgithub.com%2Fscijava%2Fscripting-jython%2Fblob%2Fmaster%2Fsrc%2Fmain%2Fresources%2Fscript_templates%2FIntro%2FGreeting.py%23L1-99999&amp;style=github&amp;showBorder=on&amp;showLineNumbers=on&amp;showFileMeta=on&amp;showCopy=on"></script> <p>We see that an input parameter <code class="language-plaintext highlighter-rouge">name</code> of type <code class="language-plaintext highlighter-rouge">String</code> is declared. <code class="language-plaintext highlighter-rouge">@Parameters</code> are handled automatically by the framework; if we run this script when the User Interface is available (e.g. from the script editor), the <code class="language-plaintext highlighter-rouge">name</code> parameter will automatically be harvested via a pop-up dialog:</p> <p><img src="/media/scripting/scriptparams.png" width="450" /></p> <p>We could also run this script <a href="/scripting/headless">headlessly</a>, thanks to the general nature of <code class="language-plaintext highlighter-rouge">@parameters</code>.</p> <p>When the script is completed, any <code class="language-plaintext highlighter-rouge">#@output</code> variables are handled by the framework, based on their type. In this case we expect the <code class="language-plaintext highlighter-rouge">greeting</code> variable to be printed, since it is a <code class="language-plaintext highlighter-rouge">string</code>.</p> <h2 id="parameter-types">Parameter types</h2> <p>A list of possible data types and the corresponding widgets is provided below.<br /> The optional style argument defines how the widget are rendered in the input window.<br /> See the respective widget sections for a preview of the styles.</p> <table> <thead> <tr> <th><strong>Data type</strong></th> <th><strong>Widget type</strong></th> <th><strong>Available styles</strong></th> </tr> </thead> <tbody> <tr> <td><code class="language-plaintext highlighter-rouge">boolean</code> <code class="language-plaintext highlighter-rouge">Boolean</code></td> <td>checkbox</td> <td> </td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">byte</code> <code class="language-plaintext highlighter-rouge">Byte</code> <code class="language-plaintext highlighter-rouge">short</code> <code class="language-plaintext highlighter-rouge">Short</code> <code class="language-plaintext highlighter-rouge">int</code> <code class="language-plaintext highlighter-rouge">Integer</code> <code class="language-plaintext highlighter-rouge">long</code> <code class="language-plaintext highlighter-rouge">Long</code></td> <td>numeric field</td> <td><code class="language-plaintext highlighter-rouge">slider</code> <code class="language-plaintext highlighter-rouge">spinner</code> <code class="language-plaintext highlighter-rouge">scroll bar</code></td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">Float</code> <code class="language-plaintext highlighter-rouge">Double</code></td> <td>numeric field</td> <td><code class="language-plaintext highlighter-rouge">slider</code> <code class="language-plaintext highlighter-rouge">spinner</code> <code class="language-plaintext highlighter-rouge">scroll bar</code></td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">BigInteger</code> <code class="language-plaintext highlighter-rouge">BigDecimal</code></td> <td>numeric field</td> <td><code class="language-plaintext highlighter-rouge">slider</code> <code class="language-plaintext highlighter-rouge">spinner</code> <code class="language-plaintext highlighter-rouge">scroll bar</code></td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">char</code> <code class="language-plaintext highlighter-rouge">Character</code> <code class="language-plaintext highlighter-rouge">String</code></td> <td>text field</td> <td><code class="language-plaintext highlighter-rouge">text field</code> <code class="language-plaintext highlighter-rouge">text area</code> <code class="language-plaintext highlighter-rouge">password</code></td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">Dataset</code> <code class="language-plaintext highlighter-rouge">ImagePlus</code></td> <td>(&gt;=2 images) triggers a dropdown list</td> <td> </td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">ColorRGB</code></td> <td>color chooser</td> <td> </td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">Date</code></td> <td>date chooser</td> <td> </td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">File</code></td> <td>file chooser</td> <td><code class="language-plaintext highlighter-rouge">open</code> <code class="language-plaintext highlighter-rouge">save</code> <code class="language-plaintext highlighter-rouge">file</code> <code class="language-plaintext highlighter-rouge">directory</code> <code class="language-plaintext highlighter-rouge">extensions:</code></td> </tr> </tbody> </table> <p>Notes and gotchas:</p> <ul> <li><code class="language-plaintext highlighter-rouge">float</code> is also an accepted field but the decimal t is not displayed in the form compared to <code class="language-plaintext highlighter-rouge">Float</code> (mind the capital F).</li> <li>A related <a href="https://github.com/scijava/scijava-common/issues/302">issue</a> occurs with <code class="language-plaintext highlighter-rouge">int</code> and <code class="language-plaintext highlighter-rouge">double</code> when a default value is set in the code and entered in the form, the value is not properly recalled at the next run. Use <code class="language-plaintext highlighter-rouge">Integer</code> and <code class="language-plaintext highlighter-rouge">Double</code> instead.</li> <li>A single <code class="language-plaintext highlighter-rouge">#@ ImagePlus</code> or <code class="language-plaintext highlighter-rouge">#@ Dataset</code> field will not show up in the input form, instead the current image will automatically be processed. However, if two <code class="language-plaintext highlighter-rouge">#@ ImagePlus</code> (or respectively <code class="language-plaintext highlighter-rouge">#@ Dataset</code>) are present then they will be rendered as drop-down buttons.</li> </ul> <p>By implementing <a href="https://javadoc.scijava.org/SciJava/org/scijava/widget/InputWidget.html">InputWidget</a> it is possible to extend this list.</p> <h2 id="examples">Examples</h2> <h3 id="integer-and-decimal-input">Integer and Decimal input</h3> <p>Integer and float can have the optional argument <em>min</em>, <em>max</em> and <em>stepSize</em> value (default 1) as well as a default value indicated by <em>value</em>.<br /> Different styles are also possible.</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">#</span><span class="p">@</span> <span class="nx">Integer</span> <span class="p">(</span><span class="nx">label</span><span class="o">=</span><span class="dl">"</span><span class="s2">Default integer style</span><span class="dl">"</span><span class="p">,</span> <span class="nx">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nx">max</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="nx">value</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span> <span class="nx">myint1</span> <span class="err">#</span><span class="p">@</span> <span class="nx">Integer</span> <span class="p">(</span><span class="nx">label</span><span class="o">=</span><span class="dl">"</span><span class="s2">Slider integer style</span><span class="dl">"</span><span class="p">,</span> <span class="nx">style</span><span class="o">=</span><span class="dl">"</span><span class="s2">slider</span><span class="dl">"</span><span class="p">,</span> <span class="nx">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nx">max</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="nx">stepSize</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> <span class="nx">myint2</span> <span class="err">#</span><span class="p">@</span> <span class="nx">Float</span> <span class="p">(</span><span class="nx">label</span><span class="o">=</span><span class="dl">"</span><span class="s2">Slider with float</span><span class="dl">"</span><span class="p">,</span> <span class="nx">style</span><span class="o">=</span><span class="dl">"</span><span class="s2">slider</span><span class="dl">"</span><span class="p">,</span> <span class="nx">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nx">max</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="nx">stepSize</span><span class="o">=</span><span class="mf">0.1</span><span class="p">)</span> <span class="nx">myfloat</span> </code></pre></div></div> <p><img src="/media/scripting/scriptparameters-integerstyles.jpg" width="450" /></p> <p>It is also possible to specify a format with a fixed number of decimals…</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// Specified format</span> <span class="err">#</span><span class="p">@</span> <span class="nx">Double</span> <span class="p">(</span><span class="nx">value</span><span class="o">=</span><span class="mf">0.0123</span><span class="p">,</span> <span class="nx">persist</span><span class="o">=</span><span class="kc">false</span><span class="p">,</span> <span class="nx">style</span><span class="o">=</span><span class="dl">"</span><span class="s2">format:#.##</span><span class="dl">"</span><span class="p">)</span> <span class="nx">i</span> <span class="err">#</span><span class="p">@</span> <span class="nx">Double</span> <span class="p">(</span><span class="nx">value</span><span class="o">=</span><span class="mf">0.0123</span><span class="p">,</span> <span class="nx">persist</span><span class="o">=</span><span class="kc">false</span><span class="p">,</span> <span class="nx">style</span><span class="o">=</span><span class="dl">"</span><span class="s2">format:#.00</span><span class="dl">"</span><span class="p">)</span> <span class="nx">j</span> <span class="err">#</span><span class="p">@</span> <span class="nx">Double</span> <span class="p">(</span><span class="nx">value</span><span class="o">=</span><span class="mf">123.45</span><span class="p">,</span> <span class="nx">persist</span><span class="o">=</span><span class="kc">false</span><span class="p">,</span> <span class="nx">style</span><span class="o">=</span><span class="dl">"</span><span class="s2">format:#####.#####</span><span class="dl">"</span><span class="p">)</span> <span class="nx">k</span> <span class="err">#</span><span class="p">@</span> <span class="nx">Double</span> <span class="p">(</span><span class="nx">value</span><span class="o">=</span><span class="mf">123.45</span><span class="p">,</span> <span class="nx">persist</span><span class="o">=</span><span class="kc">false</span><span class="p">,</span> <span class="nx">style</span><span class="o">=</span><span class="dl">"</span><span class="s2">format:00000.00000</span><span class="dl">"</span><span class="p">)</span> <span class="nx">l</span> </code></pre></div></div> <p>… in combination with slider or scrollbars:</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>// Sliders and scroll bars #@ Double (value=1, min=0, max=10, stepSize=0.001, persist=false, style=slider) m #@ Double (value=1, min=0, max=10, stepSize=0.001, persist=false, style="slider,format:0.0000") n #@ Double (value=1, min=0, max=10, stepSize=0.001, persist=false, style="scroll bar") o #@ Double (value=1, min=0, max=10, stepSize=0.001, persist=false, style="scroll bar,format:0.0000") p </code></pre></div></div> <p>Scientific notation can be specified with <code class="language-plaintext highlighter-rouge">format:0.#####E0</code></p> <h2 id="parameter-properties">Parameter properties</h2> <p>If you look at the <a href="https://github.com/scijava/scijava-common/blob/scijava-common-2.40.0/src/main/java/org/scijava/plugin/Parameter.java">@Parameter annotation</a>, you will notice it has many properties—for example, <code class="language-plaintext highlighter-rouge">name</code> and <code class="language-plaintext highlighter-rouge">description</code>.</p> <p>Script parameters can set these properties, following these guidelines:</p> <ol> <li>All properties are defined in a <strong>single parenthetical expression</strong> immediately following the <code class="language-plaintext highlighter-rouge">#@type</code> declaration.</li> <li>Properties are set by a <a href="https://docs.oracle.com/javase/tutorial/java/annotations/basics.html">comma-separated list of <strong>key=value</strong> pairs</a></li> </ol> <p>Properties are your way to customize how an <code class="language-plaintext highlighter-rouge">#@parameter</code> should be handled by the framework.</p> <h3 id="widget-labels">Widget labels</h3> <p>Widgets are the User Interface elements shown to users to collect input information. For example, instead of just displaying “Name” to the user, we can add a custom label to the field of our <code class="language-plaintext highlighter-rouge">Greeting.py</code> script as follows:</p> <div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">#@ String (label="Please enter your name") name #@ output String greeting </span> <span class="n">greeting</span> <span class="o">=</span> <span class="s">"Hello, "</span> <span class="o">+</span> <span class="n">name</span> <span class="o">+</span> <span class="s">"!"</span> </code></pre></div></div> <h3 id="widget-mouseover">Widget mouseover</h3> <p>We can add a <code class="language-plaintext highlighter-rouge">description</code> property to provide mouse-over text for our field:</p> <div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">#@ String (label="Please enter your name", description="Your name") name #@ output String greeting </span> <span class="n">greeting</span> <span class="o">=</span> <span class="s">"Hello, "</span> <span class="o">+</span> <span class="n">name</span> <span class="o">+</span> <span class="s">"!"</span> </code></pre></div></div> <h3 id="default-values">Default values</h3> <p>Default values are also supported as parameter properties:</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">#</span><span class="p">@</span> <span class="nx">Integer</span> <span class="p">(</span><span class="nx">label</span><span class="o">=</span><span class="dl">"</span><span class="s2">An integer!</span><span class="dl">"</span><span class="p">,</span><span class="nx">value</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span> <span class="nx">someInt</span><span class="s2">` </span></code></pre></div></div> <h3 id="persistence">Persistence</h3> <p>Per default, variable values are persisted between runs of a script. This means that parameter values from a previous run are used as starting value. Please note that a persisted value will overwrite a defined <a href="#default-value">default value</a>.</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">#</span><span class="p">@</span> <span class="nx">Integer</span> <span class="p">(</span><span class="nx">label</span><span class="o">=</span><span class="dl">"</span><span class="s2">An integer!</span><span class="dl">"</span><span class="p">,</span> <span class="nx">value</span><span class="o">=</span><span class="mi">15</span><span class="p">,</span> <span class="nx">persist</span><span class="o">=</span><span class="kc">false</span><span class="p">)</span> <span class="nx">someInt</span><span class="s2">` </span></code></pre></div></div> <div class="notice" style="font-size: 2; background: #ffcccb; border-left: 10px solid #f57900"><div class="notice-icon"><img src="/media/icons/warning.png" /></div><div class="notice-content"><p>Currently, “two scripts which declare the same parameter name, even with different types, will stomp each other.” See <a href="https://github.com/scijava/scijava-common/issues/193">1</a>.</p> </div> </div> <h3 id="visibility">Visibility</h3> <p>This property set if the parameter should be displayed, editable and/or recorded.</p> <p>- NORMAL: parameter is included in the history for purposes of data provenance, and included as a parameter when recording scripts.</p> <p>- TRANSIENT: parameter is excluded from the history for the purposes of data provenance, but still included as a parameter when recording scripts.</p> <p>- INVISIBLE: parameter is excluded from the history for the purposes of data provenance, and also excluded as a parameter when recording scripts. This option should only be used for parameters with no effect on the final output, such as a “verbose” flag.</p> <p>- MESSAGE: parameter value is intended as a message only, not editable by the user nor included as an input or output parameter. The option <code class="language-plaintext highlighter-rouge">required</code> should be set to false.</p> <p><img src="/media/scripting/scriptparam-messagestring.jpg" width="450" /></p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">#</span><span class="p">@</span> <span class="nb">String</span> <span class="p">(</span><span class="nx">visibility</span><span class="o">=</span><span class="nx">MESSAGE</span><span class="p">,</span> <span class="nx">value</span><span class="o">=</span><span class="dl">"</span><span class="s2">This is a documentation line</span><span class="dl">"</span><span class="p">,</span> <span class="nx">required</span><span class="o">=</span><span class="kc">false</span><span class="p">)</span> <span class="nx">msg</span> <span class="err">#</span><span class="p">@</span> <span class="nx">Integer</span> <span class="p">(</span><span class="nx">label</span><span class="o">=</span><span class="dl">"</span><span class="s2">Some integer parameter</span><span class="dl">"</span><span class="p">)</span> <span class="nx">my_int</span> </code></pre></div></div> <p>You can <a href="https://forum.image.sc/t/multiline-messages-in-dialog-widgets/183">use HTML</a> to format the message string, for example:</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">#</span><span class="p">@</span> <span class="nb">String</span> <span class="p">(</span><span class="nx">visibility</span><span class="o">=</span><span class="nx">MESSAGE</span><span class="p">,</span> <span class="nx">value</span><span class="o">=</span><span class="dl">"</span><span class="s2">&lt;html&gt;Message line 1&lt;br/&gt;Message line 2&lt;p&gt;Let's make a list&lt;ul&gt;&lt;li&gt;item a&lt;/li&gt;&lt;li&gt;item b&lt;/li&gt;&lt;/ul&gt;&lt;/html&gt;</span><span class="dl">"</span><span class="p">)</span> <span class="nx">docmsg</span> <span class="err">#</span><span class="p">@</span> <span class="nx">Integer</span> <span class="nx">anIntParam</span> </code></pre></div></div> <p><img src="/media/scripting/scijavamultilinemessage.png" alt="" /></p> <div class="notice" style="font-size: 2; background: #ffcccb; border-left: 10px solid #f57900"><div class="notice-icon"><img src="/media/icons/warning.png" /></div><div class="notice-content"><p>Currently if a script containing a MESSAGE string is recorded with the macro recorder and the resulting recorded code executed, a window will show up containing only the MESSAGE string This is unexpected and will be corrected in the future.</p> </div> </div> <h3 id="multiple-choice">Multiple Choice</h3> <p>Any parameter can be turned into a multiple-choice selector by adding a <code class="language-plaintext highlighter-rouge">choices={...}</code> property.<br /> The choice widget can have different styles like dropdown list or radio buttons.</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">#</span><span class="p">@</span> <span class="nb">String</span> <span class="p">(</span><span class="nx">choices</span><span class="o">=</span><span class="p">{</span><span class="dl">"</span><span class="s2">Option 1</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">Option 2</span><span class="dl">"</span><span class="p">},</span> <span class="nx">style</span><span class="o">=</span><span class="dl">"</span><span class="s2">listBox</span><span class="dl">"</span><span class="p">)</span> <span class="nx">myChoice123</span> <span class="err">#</span><span class="p">@</span> <span class="nb">String</span> <span class="p">(</span><span class="nx">choices</span><span class="o">=</span><span class="p">{</span><span class="dl">"</span><span class="s2">Option A</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">Option B</span><span class="dl">"</span><span class="p">},</span> <span class="nx">style</span><span class="o">=</span><span class="dl">"</span><span class="s2">radioButtonHorizontal</span><span class="dl">"</span><span class="p">)</span> <span class="nx">myChoiceABC</span> <span class="nx">print</span><span class="p">(</span><span class="nx">myChoice123</span><span class="p">)</span> <span class="nx">print</span><span class="p">(</span><span class="nx">myChoiceABC</span><span class="p">)</span> </code></pre></div></div> <p><img src="/media/scripting/input-styles.png" alt="" /></p> <h3 id="files-and-folders">Files and Folders</h3> <p>By default, a <code class="language-plaintext highlighter-rouge">#@ File</code> parameter will create a chooser for a single file. Here is an example in python:</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">#</span><span class="p">@</span> <span class="nx">File</span> <span class="p">(</span><span class="nx">label</span><span class="o">=</span><span class="dl">"</span><span class="s2">Select a file</span><span class="dl">"</span><span class="p">)</span> <span class="nx">myFile</span> <span class="nx">print</span><span class="p">(</span><span class="nx">myFile</span><span class="p">)</span> </code></pre></div></div> <p>You can request for multiple files or folders as well. However multiple files/folders input are not yet macro-recordable.</p> <p>Example in ImageJ Macro Language:</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">#</span><span class="p">@</span> <span class="nx">File</span><span class="p">[]</span> <span class="nx">listOfPaths</span> <span class="p">(</span><span class="nx">label</span><span class="o">=</span><span class="dl">"</span><span class="s2">select files or folders</span><span class="dl">"</span><span class="p">,</span> <span class="nx">style</span><span class="o">=</span><span class="dl">"</span><span class="s2">both</span><span class="dl">"</span><span class="p">)</span> <span class="nx">print</span><span class="p">(</span><span class="dl">"</span><span class="s2">There are </span><span class="dl">"</span><span class="o">+</span><span class="nx">listOfPaths</span><span class="p">.</span><span class="nx">length</span><span class="o">+</span><span class="dl">"</span><span class="s2"> paths selected.</span><span class="dl">"</span><span class="p">);</span> <span class="k">for</span> <span class="p">(</span><span class="nx">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span><span class="nx">i</span><span class="o">&lt;</span><span class="nx">listOfPaths</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span> <span class="nx">myFile</span><span class="o">=</span><span class="nx">listOfPaths</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span> <span class="k">if</span> <span class="p">(</span><span class="nx">File</span><span class="p">.</span><span class="nx">exists</span><span class="p">(</span><span class="nx">myFile</span><span class="p">))</span> <span class="p">{</span> <span class="nx">print</span><span class="p">(</span><span class="nx">myFile</span> <span class="o">+</span> <span class="dl">"</span><span class="s2"> exists.</span><span class="dl">"</span><span class="p">);</span> <span class="k">if</span> <span class="p">(</span><span class="nx">File</span><span class="p">.</span><span class="nx">isDirectory</span><span class="p">(</span><span class="nx">myFile</span><span class="p">))</span> <span class="p">{</span> <span class="nx">print</span><span class="p">(</span><span class="dl">"</span><span class="s2">Is a directory</span><span class="dl">"</span><span class="p">);</span> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="nx">print</span><span class="p">(</span><span class="dl">"</span><span class="s2">Is a file</span><span class="dl">"</span><span class="p">);</span> <span class="p">}</span> <span class="p">}</span> <span class="p">}</span> </code></pre></div></div> <p>If you want to select files or folders exclusively, use a <code class="language-plaintext highlighter-rouge">style</code> property:</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">#</span><span class="p">@</span> <span class="nx">File</span> <span class="p">(</span><span class="nx">label</span><span class="o">=</span><span class="dl">"</span><span class="s2">Select a file</span><span class="dl">"</span><span class="p">,</span> <span class="nx">style</span><span class="o">=</span><span class="dl">"</span><span class="s2">file</span><span class="dl">"</span><span class="p">)</span> <span class="nx">myFile</span> <span class="err">#</span><span class="p">@</span> <span class="nx">File</span> <span class="p">(</span><span class="nx">label</span><span class="o">=</span><span class="dl">"</span><span class="s2">Select a directory</span><span class="dl">"</span><span class="p">,</span> <span class="nx">style</span><span class="o">=</span><span class="dl">"</span><span class="s2">directory</span><span class="dl">"</span><span class="p">)</span> <span class="nx">myDir</span> <span class="nx">print</span><span class="p">(</span><span class="nx">myFile</span><span class="p">)</span> <span class="nx">print</span><span class="p">(</span><span class="nx">myDir</span><span class="p">)</span> </code></pre></div></div> <p>The single <code class="language-plaintext highlighter-rouge">File</code> parameter support the styles “<em>file</em>”, “<em>directory</em>”, “<em>open</em>”, “<em>save</em>”.</p> <p>For multiple file or directories, the styles are plural</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">#</span><span class="p">@</span> <span class="nx">File</span><span class="p">[]</span> <span class="p">(</span><span class="nx">label</span><span class="o">=</span><span class="dl">"</span><span class="s2">Select some files</span><span class="dl">"</span><span class="p">,</span> <span class="nx">style</span><span class="o">=</span><span class="dl">"</span><span class="s2">files</span><span class="dl">"</span><span class="p">)</span> <span class="nx">listfiles</span> <span class="err">#</span><span class="p">@</span> <span class="nx">File</span><span class="p">[]</span> <span class="p">(</span><span class="nx">label</span><span class="o">=</span><span class="dl">"</span><span class="s2">Select some directories</span><span class="dl">"</span><span class="p">,</span> <span class="nx">style</span><span class="o">=</span><span class="dl">"</span><span class="s2">directories</span><span class="dl">"</span><span class="p">)</span> <span class="nx">listdirs</span> <span class="nx">print</span><span class="p">(</span><span class="nx">listfiles</span><span class="p">)</span> <span class="nx">print</span><span class="p">(</span><span class="nx">listdirs</span><span class="p">)</span> </code></pre></div></div> <p>The <code class="language-plaintext highlighter-rouge">File[]</code> parameter supports the styles “<em>files</em>”, “<em>directories</em>”, “<em>both</em>”.</p> <h3 id="styles">Styles</h3> <p>You can influence the visual style of some of the input widgets. See previous paragraph for widget-specific style examples.</p> </div> </div> </section> <!-- Footer --> <section id="footer"> <ul class="icons"> <li><a href="https://forum.image.sc/tag/imagej" class="icon alt"><img src="/media/icons/image-sc.png" width="24" style="vertical-align: middle; margin-top: -10px"><span class="label">Forum</span></a></li> <li><a href="https://twitter.com/hashtag/ImageJ" class="icon brands alt fa-twitter"><span class="label">Twitter</span></a></li> <li><a href="https://github.com/imagej" class="icon brands alt fa-github"><span class="label">GitHub</span></a></li> </ul> <ul class="copyright"> <li>Design: <a href="http://html5up.net">HTML5 UP</a></li> </ul> </section> <!-- Hamburger menu --> <nav role="navigation"> <div id="ham-toggle"> <input type="checkbox" /> <span></span> <!-- top bun --> <span></span> <!-- hamburger --> <span></span> <!-- bottom bun --> <ul id="ham-menu"> <div class="menu"><h3>ImageJ Docs</h3> <ul> <li><a href="/downloads">Download</a></li> <li><details><summary>Learn</summary><ul> <li><details><summary><a href="/learn">ImageJ Basics</a></summary><ul> <li><a href="/tutorials">Tutorials</a></li> <li><a href="/learn/user-guides">User Guides</a></li> <li><a href="/learn/keyboard-shortcuts">Keyboard Shortcuts</a></li> <li><a href="/learn/tips-and-tricks">Tips and Tricks</a></li> <li><a href="/learn/troubleshooting">Troubleshooting</a></li> <li><a href="/learn/faq">Frequently Asked Questions</a></li> <li><details><summary><a href="/platforms">Supported Platforms</a></summary><ul> <li><a href="/platforms/windows">Windows</a></li> <li><a href="/platforms/macos">MacOS</a></li> <li><a href="/platforms/linux">Linux</a></li> <li><a href="/platforms/pi">Raspberry Pi</a></li> <li><a href="/platforms/android">Android</a></li> </ul></details></li> <!-- Learn/ImageJ Basics/Supported Platforms --> <li><details><summary><a href="/formats">File Formats</a></summary><ul> <li><a href="/formats/bio-formats">Bio-Formats</a></li> <li><a href="/formats/video">Video formats</a></li> <li><a href="/formats/quicktime">QuickTime</a></li> <li><a href="/formats/tiff">TIFF</a></li> <li><a href="/formats/pdf">PDF</a></li> <li><a href="/formats/dicom">DICOM</a></li> <li><a href="/formats/lsm">Zeiss LSM</a></li> <li><a href="/formats/olympus">Olympus VSI</a></li> <li><a href="/formats/lurawave">Opera Flex</a></li> <li><a href="/formats/fib-sem">FIB-SEM</a></li> </ul></details></li> <!-- Learn/ImageJ Basics/File Formats --> </ul></details></li> <!-- Learn/ImageJ --> <li><details><summary><a href="/imaging">Scientific Imaging</a></summary><ul> <li><a href="/imaging/principles">Principles of Scientific Imaging</a></li> <li><a href="/imaging/annotating-images">Annotating Images</a></li> <li><a href="/imaging/colocalization-analysis">Colocalization</a></li> <li><a href="/imaging/color-image-processing">Color Image Processing</a></li> <li><a href="/imaging/deconvolution">Deconvolution</a></li> <li><a href="/imaging/image-intensity-processing">Image Intensity Processing</a></li> <li><a href="/imaging/particle-analysis">Particle Analysis</a></li> <li><a href="/imaging/registration">Registration</a></li> <li><a href="/imaging/segmentation">Segmentation</a></li> <li><a href="/imaging/stack-slice-manipulations">Stack-slice Manipulations</a></li> <li><a href="/imaging/t-functions">T-functions</a></li> <li><a href="/imaging/tracking">Tracking</a></li> <li><a href="/imaging/visualization">Visualization</a></li> <li><a href="/imaging/z-functions">Z-functions</a></li> </ul></details></li> <!-- Learn/Scientific Imaging --> </ul></details></li> <!-- Learn --> <li><details open><summary><a href="/plugins">Extend</a></summary><ul> <li><a href="/list-of-extensions">List of Extensions</a></li> <li><details><summary><a href="/update-sites">Update Sites</a></summary><ul> <li><a href="/list-of-update-sites">List of Update Sites</a></li> <li><a href="/update-sites/following">Following an Update Site</a></li> <li><a href="/update-sites/setup">Creating an Update Site</a></li> <li><a href="/update-sites/tos">Terms of Service</a></li> <li><a href="/update-sites/automatic-uploads">Automatic Upload</a></li> <li><a href="/update-sites/core-uploads">Uploading to Core Sites</a></li> <li><a href="/update-sites/faq">Update Sites FAQ</a></li> <li><a href="/update-sites/stats">Statistics</a></li> </ul></details></li> <!-- Extend/Update Sites --> <li><details open><summary><a href="/scripting">Scripting</a></summary><ul> <li><a href="/scripting/basics">Scripting Basics</a></li> <li><a href="/scripting/script-editor">Script Editor</a></li> <li><a class="current-page">Parameters</a></li> <li><a href="/scripting/user-input">User Input</a></li> <li><a href="/scripting/auto-imports">Auto Import</a></li> <li><a href="/scripting/templates">Templates</a></li> <li><a href="/scripting/batch">Batch Processing</a></li> <li><a href="/scripting/headless">Running Headlessly</a></li> <li><a href="/scripting/comparisons">Scripting Comparisons</a></li> <li><a href="/scripting/toolbox">Toolbox</a></li> <li><details><summary>Languages</summary><ul> <li><a href="/scripting/beanshell">BeanShell Scripting</a></li> <li><a href="/scripting/groovy">Groovy Scripting</a></li> <li><a href="/scripting/macro">ImageJ Macro</a></li> <li><a href="/scripting/javascript">JavaScript</a></li> <li><a href="/scripting/clojure">Lisp (Clojure)</a></li> <li><a href="/scripting/matlab">MATLAB</a></li> <li><a href="/scripting/jython">Python (Jython)</a></li> <li><a href="/scripting/python">Python (native)</a></li> <li><a href="/scripting/renjin">R (Renjin)</a></li> <li><a href="/scripting/jruby">Ruby (JRuby)</a></li> <li><a href="/scripting/scala">Scala Scripting</a></li> </ul></details></li> <!-- Extend/Scripting/Languages --> </ul></details></li> <!-- Extend/Scripting --> <li><details><summary><a href="/develop">Development</a></summary><ul> <li><a href="/develop/philosophy">Philosophy</a></li> <li><a href="/develop/architecture">Architecture</a></li> <li><a href="/develop/source">Source code</a></li> <li><a href="/develop/project-management">Project management</a></li> <li><a href="/develop/coding-style">Coding style</a></li> <li><a href="/develop/javadoc">Using Javadoc</a></li> <li><a href="/develop/debugging">Debugging</a></li> <li><a href="/develop/wish-list">Wish list</a></li> <li><details><summary>Tools</summary><ul> <li><a href="/develop/github">GitHub</a></li> <li><a href="/develop/maven">Maven</a></li> <li><a href="/develop/ci">CI/CD</a></li> <li><a href="/develop/dotfiles">Dotfiles</a></li> <li><details><summary><a href="/develop/ides">IDEs</a></summary><ul> <li><a href="/develop/eclipse">Eclipse</a></li> <li><a href="/develop/netbeans">NetBeans</a></li> <li><a href="/develop/intellij">IntelliJ IDEA</a></li> <li><a href="/develop/command-line">Command Line</a></li> </ul></details></li> </ul></details></li> <!-- Extend/Development/Tools --> <li><details><summary>Guides</summary><ul> <li><a href="/develop/plugins">Writing plugins</a></li> <li><a href="/develop/improving-the-code">Contributing to a plugin</a></li> <li><a href="/develop/releasing">Development lifecycle</a></li> <li><a href="/develop/building-a-pom">Building a POM</a></li> <li><a href="/develop/debugging-exercises">Hands-on debugging</a></li> <li><a href="/develop/writing-ops">Adding new ops</a></li> <li><a href="/develop/formats">Adding new formats</a></li> <li><a href="/develop/native-libraries">Using native libraries</a></li> <li><a href="/develop/tips">Tips for developers</a></li> <li><a href="/develop/cpp-tips">Tips for C++ developers</a></li> <li><a href="/develop/ij1-plugins">ImageJ 1.x plugins</a></li> <li><a href="/develop/versioning">Versioning</a></li> <li><a href="/develop/logging">Logging</a></li> <li><a href="/develop/uber-jars">Uber-JARs</a></li> </ul></details></li> <!-- Extend/Development/Guides --> <li><details><summary><a href="/develop/git">Git</a></summary><ul> <li><a href="/develop/git/eclipse">Git in Eclipse (EGit)</a></li> <li><a href="/develop/git/mini-howto">Git mini howto</a></li> <li><a href="/develop/git/workshop">Git workshop</a></li> <li><a href="/develop/git/conflicts">Git conflicts</a></li> <li><a href="/develop/git/topic-branches">Git topic branches</a></li> <li><a href="/develop/git/notes">Git notes</a></li> <li><a href="/develop/git/reflogs">Git reflogs</a></li> <li><a href="/develop/git/submodules">Git submodules</a></li> <li><a href="/develop/git/pinpoint-regressions">How to pinpoint regressions</a></li> <li><a href="/develop/git/publish-a-repository">How to publish a git repository</a></li> <li><a href="/develop/git/extract-a-subproject">How to extract a subproject</a></li> </ul></details></li> <!-- Extend/Development/Git --> </ul></details></li> <!-- Extend/Development --> </ul></details></li> <!-- Extend --> <li><details><summary><a href="/contribute">Contribute</a></summary><ul> <li><a href="/contribute/citing">Citing</a></li> <li><a href="/people">Contributors</a></li> <li><a href="/orgs">Organizations</a></li> <li><a href="/contribute/governance">Governance</a></li> <li><a href="/contribute/funding">Funding</a></li> <li><a href="/contribute/fiji">Contributing to Fiji</a></li> <li><details><summary><a href="/licensing">Licensing</a></summary><ul> <li><details><summary><a href="/licensing/open-source">Open Source</a></summary><ul> <li><a href="/licensing/apache">Apache</a></li> <li><a href="/licensing/bsd">BSD</a></li> <li><a href="/licensing/epl">EPL</a></li> <li><a href="/licensing/gpl">GPL</a></li> <li><a href="/licensing/lgpl">LGPL</a></li> <li><a href="/licensing/mit">MIT</a></li> <li><a href="/licensing/public-domain">Public domain</a></li> <li><a href="/licensing/big">BIG</a></li> </ul></details></li> <!-- Contribute/Licensing/Open Source --> <li><a href="/licensing/closed-source">Proprietary</a></li> </ul></details></li> <!-- Contribute/Licensing --> <li><details><summary><a href="/editing">Editing the Wiki</a></summary><ul> <li><a href="/editing/advanced">Advanced Editing</a></li> <li><a href="/editing/buttons">Buttons</a></li> <li><a href="/editing/citations">Citations</a></li> <li><a href="/editing/code">Source Code</a></li> <li><a href="/editing/debugging">Debugging</a></li> <li><a href="/editing/headers">Headers</a></li> <li><a href="/editing/icons">Icons</a></li> <li><a href="/editing/images">Images</a></li> <li><a href="/editing/keys">Keyboard Shortcuts</a></li> <li><a href="/editing/linking">Linking</a></li> <li><a href="/editing/math">Math Expressions</a></li> <li><a href="/editing/menu-paths">Menu Paths</a></li> <li><a href="/editing/navigation">Navigation</a></li> <li><a href="/editing/notices">Notices</a></li> <li><a href="/editing/people">People</a></li> <li><a href="/editing/pitfalls">Pitfalls</a></li> <li><a href="/editing/quizzes">Quizzes</a></li> <li><a href="/editing/statbox">Statbox</a></li> <li><a href="/editing/symbols">Symbols</a></li> <li><a href="/editing/tables">Tables</a></li> <li><a href="/editing/timelines">Timelines</a></li> <li><a href="/editing/tooltips">Tooltips</a></li> <li><a href="/editing/videos">Videos</a></li> <li><a href="/editing/whitespace">Whitespace</a></li> </ul></details></li> <!-- Contribute/Editing the Wiki --> </ul></details></li> <!-- Contribute --> <li><details><summary><a href="/discuss">Discuss</a></summary><ul> <li><a href="/discuss/bugs">Reporting Issues</a></li> <li><a href="/discuss/mailing-lists">Mailing Lists</a></li> <li><a href="/discuss/chat">Chat</a></li> </ul></details></li> <!-- Discuss --> <li><details><summary>Explore</summary><ul> <li><a href="/news">News</a></li> <li><details><summary><a href="/events">Events</a></summary><ul> <li><a href="/events/presentations">Presentations</a></li> <li><a href="/events/conferences">Conferences</a></li> <li><a href="/events/hackathons">Hackathons</a></li> <li><a href="/events">More...</a></li> </ul></details></li> <!-- Discuss/Events --> <li><details><summary><a href="/libs">Libraries</a></summary><ul> <li><a href="/libs/imagej-ops">ImageJ Ops</a></li> <li><a href="/libs/imagej-common">ImageJ Common</a></li> <li><a href="/libs/imagej-legacy">ImageJ Legacy</a></li> <li><a href="/libs/scijava">SciJava</a></li> <li><a href="/libs/scifio">SCIFIO</a></li> <li><details><summary><a href="/libs/imglib2">ImgLib2</a></summary><ul> <li><a href="/libs/imglib2/getting-started">Getting Started</a></li> <li><a href="/libs/imglib2/accessors">Accessors</a></li> <li><a href="/libs/imglib2/accessibles">Accessibles</a></li> <li><a href="/libs/imglib2/examples">Examples</a></li> <li><a href="/libs/imglib2/workshop-introductory">Introductory Workshop</a></li> <li><a href="/libs/imglib2/workshop-advanced">Advanced Workshop</a></li> <li><a href="/libs/imglib2/matlab">ImgLib2 images in MATLAB</a></li> <li><a href="/libs/imglib2/benchmarks">Benchmarks</a></li> <li><a href="/libs/imglib2/faq">FAQ</a></li> <li><a href="/libs/imglib2/developing">Developing ImgLib2</a></li> <li><a href="/libs/imglib2/discussion">ImgLib2 Discussion</a></li> </ul></details></li> <!-- Explore/Libraries/ImgLib2 --> <li><a href="/libs">More...</a></li> </ul></details></li> <!-- Explore/Libraries --> <li><details><summary><a href="/software">Software</a></summary><ul> <li><a href="/software/nih-image">NIH Image</a></li> <li><a href="/software/imagej">ImageJ</a></li> <li><a href="/software/imagej2">ImageJ2</a></li> <li><a href="/software/fiji">Fiji</a></li> <li><a href="/software">More...</a></li> </ul></details></li> <!-- Explore/Software --> </ul></details></li> <!-- Explore --> </ul> </div> </ul> </div> </nav> <div id="dock-overlay-left" class="dock-overlay" data-dock-target="left-column"></div> <div id="dock-overlay-right" class="dock-overlay" data-dock-target="right-column"></div> <!-- Search results --> <div id="search-results"> <div id="search-hits"></div> <div id="pagination"></div> </div> <!-- Scripts --> <!-- Libraries --> <script src="/assets/js/jquery.min.js"></script> <script src="/assets/js/jquery.scrolly.min.js"></script> <script src="/assets/js/browser.min.js"></script> <script src="/assets/js/breakpoints.min.js"></script> <script src="/assets/js/util.js"></script> <script src="/assets/js/jquery.toc.js"></script> <script src="/assets/js/lightbox.min.js"></script> <!-- Extensions --> <!-- Site code --> <script src="/assets/js/main.js"></script> <script src="/assets/js/dock.js"></script> <script src="/assets/js/code.js"></script> <!-- Anchors --> <script src="https://cdn.jsdelivr.net/npm/anchor-js/anchor.min.js"></script> <script>anchors.add('#page h1, #page h2, #page h3, #page h4, #page h5, #page h6');</script> <!-- Citations --> <script src="https://cdn.jsdelivr.net/npm/citation-js@0.4.0-9"></script> <script src="/assets/js/cite.js"></script> <!-- Search --> <script src="https://cdn.jsdelivr.net/npm/algoliasearch@4.13.0/dist/algoliasearch-lite.umd.js"></script> <script src="https://cdn.jsdelivr.net/npm/instantsearch.js@4.40.3/dist/instantsearch.production.min.js"></script> <script src="/assets/js/search.js"></script> <script src="/assets/js/search-tweaks.js"></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10