CINXE.COM
Scripting toolbox
<!DOCTYPE html> <html> <head> <title>Scripting toolbox</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="Scripting toolbox" 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/toolbox" 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/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/toolbox.md">Page history</a> <a href="https://github.com/imagej/imagej.github.io/edit/main/_pages/scripting/toolbox.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 href="/scripting/parameters">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 class="current-page">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/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/fiji"><span class="tooltip"><img src="/media/icons/fiji.svg"><span class="tooltiptext" style="top: 80%; left: 25%; width: 20em">This page describes content relating to the Fiji distribution of ImageJ. Click the logo for details.</span></span></a> <h1>Scripting toolbox</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>This page is meant to provide small code snippets as a starting point for writing scripts.</p> <div class="notice" style="font-size: 1; background: #e6e6e6; border-left: 10px solid gold"><div class="notice-content"><p><strong>See also:</strong></p> <ul> <li><a href="/scripting">Scripting overview</a> for a list of available scripting languages.</li> <li><a href="/scripting/comparisons">Scripting comparisons</a> to compare and contrast the languages.</li> <li><a href="/plugins/bar">Broadly Applicable Routines</a>, a curated collection of snippets.</li> <li>Albert Cardona’s comprehensive <a href="http://www.ini.uzh.ch/~acardona/fiji-tutorial/">Fiji Jython tutorial</a> (please note that it is a better idea to contribute tutorials to the ImageJ Wiki directly).</li> </ul> </div> </div> <div class="notice" style="font-size: 2; background: #dedede; border-left: 10px solid #7e7e7e"><div class="notice-icon"><span class="">💡</span></div><div class="notice-content"><p>To copy the snippets, mouse over the code and click the Copy button that appears.</p> </div> </div> <h2 id="opening-an-image-using-imagej">Opening an image using ImageJ</h2> <h4 id="macro">Macro</h4> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">path</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">/path/to/file</span><span class="dl">"</span><span class="p">;</span> <span class="nx">open</span><span class="p">(</span><span class="nx">path</span><span class="p">);</span> </code></pre></div></div> <h4 id="javascript">JavaScript</h4> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">importClass</span><span class="p">(</span><span class="nb">Packages</span><span class="p">.</span><span class="nx">ij</span><span class="p">.</span><span class="nx">IJ</span><span class="p">);</span> <span class="kd">var</span> <span class="nx">path</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">/path/to/file</span><span class="dl">"</span><span class="p">;</span> <span class="kd">var</span> <span class="nx">imp</span> <span class="o">=</span> <span class="nx">IJ</span><span class="p">.</span><span class="nx">openImage</span><span class="p">(</span><span class="nx">path</span><span class="p">);</span> <span class="nx">imp</span><span class="p">.</span><span class="nx">show</span><span class="p">();</span> </code></pre></div></div> <h4 id="python">Python</h4> <div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="nn">ij</span> <span class="kn">import</span> <span class="n">IJ</span> <span class="n">path</span> <span class="o">=</span> <span class="s">"/path/to/file"</span> <span class="n">imp</span> <span class="o">=</span> <span class="n">IJ</span><span class="p">.</span><span class="n">openImage</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> <span class="n">imp</span><span class="p">.</span><span class="n">show</span><span class="p">()</span> </code></pre></div></div> <h4 id="ruby">Ruby</h4> <div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">include_class</span> <span class="s1">'ij.IJ'</span> <span class="n">path</span> <span class="o">=</span> <span class="s2">"/path/to/file"</span> <span class="n">imp</span> <span class="o">=</span> <span class="n">ij</span><span class="o">.</span><span class="no">IJ</span><span class="p">.</span><span class="nf">openImage</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> <span class="n">imp</span><span class="p">.</span><span class="nf">show</span> </code></pre></div></div> <h4 id="clojure">Clojure</h4> <div class="language-clojure highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">(</span><span class="nb">import</span><span class="w"> </span><span class="ss">'ij.IJ</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="k">let</span><span class="w"> </span><span class="p">[</span><span class="nb">path</span><span class="w"> </span><span class="s">"/path/to/file"</span><span class="w"> </span><span class="n">imp</span><span class="w"> </span><span class="p">(</span><span class="nf">IJ/openImage</span><span class="w"> </span><span class="nb">path</span><span class="p">)]</span><span class="w"> </span><span class="p">(</span><span class="nf">.show</span><span class="w"> </span><span class="n">imp</span><span class="p">))</span><span class="w"> </span></code></pre></div></div> <h4 id="beanshell">BeanShell</h4> <pre><code class="language-beanshell">import ij.IJ; path = "/path/to/file"; imp = IJ.openImage(path); imp.show(); </code></pre> <h2 id="opening-an-image-using-bio-formats">Opening an image using Bio-Formats</h2> <h4 id="macro-1">Macro</h4> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">path</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">/path/to/file</span><span class="dl">"</span><span class="p">;</span> <span class="nx">run</span><span class="p">(</span><span class="dl">"</span><span class="s2">Bio-Formats Importer</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">open=</span><span class="dl">"</span> <span class="o">+</span> <span class="nx">path</span> <span class="o">+</span> <span class="dl">"</span><span class="s2"> autoscale color_mode=Default view=Hyperstack stack_order=XYCZT</span><span class="dl">"</span><span class="p">);</span> </code></pre></div></div> <h4 id="javascript-1">JavaScript</h4> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">importClass</span><span class="p">(</span><span class="nb">Packages</span><span class="p">.</span><span class="nx">loci</span><span class="p">.</span><span class="nx">plugins</span><span class="p">.</span><span class="nx">BF</span><span class="p">);</span> <span class="kd">var</span> <span class="nx">path</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">/path/to/file</span><span class="dl">"</span><span class="p">;</span> <span class="kd">var</span> <span class="nx">imps</span> <span class="o">=</span> <span class="nx">BF</span><span class="p">.</span><span class="nx">openImagePlus</span><span class="p">(</span><span class="nx">path</span><span class="p">);</span> <span class="nx">imps</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">show</span><span class="p">();</span> </code></pre></div></div> <p>or, with more options:</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">importClass</span><span class="p">(</span><span class="nb">Packages</span><span class="p">.</span><span class="nx">loci</span><span class="p">.</span><span class="nx">plugins</span><span class="p">.</span><span class="nx">BF</span><span class="p">);</span> <span class="nx">importClass</span><span class="p">(</span><span class="nb">Packages</span><span class="p">[</span><span class="dl">'</span><span class="s1">loci.plugins.in.ImporterOptions</span><span class="dl">'</span><span class="p">]);</span> <span class="c1">// 'in' is a reserved word, hence the different syntax</span> <span class="nx">importClass</span><span class="p">(</span><span class="nb">Packages</span><span class="p">.</span><span class="nx">loci</span><span class="p">.</span><span class="nx">common</span><span class="p">.</span><span class="nx">Region</span><span class="p">);</span> <span class="kd">var</span> <span class="nx">path</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">/path/to/file</span><span class="dl">"</span><span class="p">;</span> <span class="kd">var</span> <span class="nx">options</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">ImporterOptions</span><span class="p">();</span> <span class="nx">options</span><span class="p">.</span><span class="nx">setId</span><span class="p">(</span><span class="nx">path</span><span class="p">);</span> <span class="nx">options</span><span class="p">.</span><span class="nx">setAutoscale</span><span class="p">(</span><span class="kc">true</span><span class="p">);</span> <span class="nx">options</span><span class="p">.</span><span class="nx">setCrop</span><span class="p">(</span><span class="kc">true</span><span class="p">);</span> <span class="nx">options</span><span class="p">.</span><span class="nx">setCropRegion</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="k">new</span> <span class="nx">Region</span><span class="p">(</span><span class="nx">x</span><span class="p">,</span> <span class="nx">y</span><span class="p">,</span> <span class="nx">w</span><span class="p">.</span> <span class="nx">h</span><span class="p">));</span> <span class="nx">options</span><span class="p">.</span><span class="nx">setColorMode</span><span class="p">(</span><span class="nx">ImporterOptions</span><span class="p">.</span><span class="nx">COLOR_MODE_COMPOSITE</span><span class="p">);</span> <span class="kd">var</span> <span class="nx">imps</span> <span class="o">=</span> <span class="nx">BF</span><span class="p">.</span><span class="nx">openImagePlus</span><span class="p">(</span><span class="nx">options</span><span class="p">);</span> <span class="nx">imps</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">show</span><span class="p">();</span> </code></pre></div></div> <h4 id="python-1">Python</h4> <p>See also <a href="https://gist.github.com/ctrueden/6282856">this python example script</a></p> <ul> <li> <p>Ruby</p> </li> <li> <p>Clojure</p> </li> <li> <p>BeanShell</p> </li> </ul> <h2 id="opening-processing-and-saving-a-sequence-of-files-in-a-folder">Opening, processing, and saving a sequence of files in a folder</h2> <h4 id="macro-2">Macro</h4> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">input</span> <span class="o">=</span> <span class="nx">getDirectory</span><span class="p">(</span><span class="dl">"</span><span class="s2">Input directory</span><span class="dl">"</span><span class="p">);</span> <span class="nx">output</span> <span class="o">=</span> <span class="nx">getDirectory</span><span class="p">(</span><span class="dl">"</span><span class="s2">Output directory</span><span class="dl">"</span><span class="p">);</span> <span class="nx">Dialog</span><span class="p">.</span><span class="nx">create</span><span class="p">(</span><span class="dl">"</span><span class="s2">File type</span><span class="dl">"</span><span class="p">);</span> <span class="nx">Dialog</span><span class="p">.</span><span class="nx">addString</span><span class="p">(</span><span class="dl">"</span><span class="s2">File suffix: </span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">.tif</span><span class="dl">"</span><span class="p">,</span> <span class="mi">5</span><span class="p">);</span> <span class="nx">Dialog</span><span class="p">.</span><span class="nx">show</span><span class="p">();</span> <span class="nx">suffix</span> <span class="o">=</span> <span class="nx">Dialog</span><span class="p">.</span><span class="nx">getString</span><span class="p">();</span> <span class="nx">processFolder</span><span class="p">(</span><span class="nx">input</span><span class="p">);</span> <span class="kd">function</span> <span class="nx">processFolder</span><span class="p">(</span><span class="nx">input</span><span class="p">)</span> <span class="p">{</span> <span class="nx">list</span> <span class="o">=</span> <span class="nx">getFileList</span><span class="p">(</span><span class="nx">input</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"><</span> <span class="nx">list</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="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">list</span><span class="p">[</span><span class="nx">i</span><span class="p">]))</span> <span class="nx">processFolder</span><span class="p">(</span><span class="dl">""</span> <span class="o">+</span> <span class="nx">input</span> <span class="o">+</span> <span class="nx">list</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">endsWith</span><span class="p">(</span><span class="nx">list</span><span class="p">[</span><span class="nx">i</span><span class="p">],</span> <span class="nx">suffix</span><span class="p">))</span> <span class="nx">processFile</span><span class="p">(</span><span class="nx">input</span><span class="p">,</span> <span class="nx">output</span><span class="p">,</span> <span class="nx">list</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span> <span class="p">}</span> <span class="p">}</span> <span class="kd">function</span> <span class="nx">processFile</span><span class="p">(</span><span class="nx">input</span><span class="p">,</span> <span class="nx">output</span><span class="p">,</span> <span class="nx">file</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// do the processing here by replacing</span> <span class="c1">// the following two lines by your own code</span> <span class="nx">print</span><span class="p">(</span><span class="dl">"</span><span class="s2">Processing: </span><span class="dl">"</span> <span class="o">+</span> <span class="nx">input</span> <span class="o">+</span> <span class="nx">file</span><span class="p">);</span> <span class="nx">open</span><span class="p">(</span><span class="nx">input</span> <span class="o">+</span> <span class="nx">file</span><span class="p">);</span> <span class="nx">print</span><span class="p">(</span><span class="dl">"</span><span class="s2">Saving to: </span><span class="dl">"</span> <span class="o">+</span> <span class="nx">output</span><span class="p">);</span> <span class="nx">saveAs</span><span class="p">(</span><span class="dl">"</span><span class="s2">/formats/tiff</span><span class="dl">"</span><span class="p">,</span> <span class="nx">output</span><span class="o">+</span><span class="nx">file</span><span class="p">);</span> <span class="nx">close</span><span class="p">();</span> <span class="p">}</span> </code></pre></div></div> <p>See also the tutorial <em><a href="/tutorials/apply-operation-to-a-complete-directory">How to apply a common operation to a complete directory</a></em>.</p> <h4 id="python-2">Python</h4> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">import</span> <span class="nx">os</span> <span class="k">from</span> <span class="nx">ij</span> <span class="k">import</span> <span class="nx">IJ</span><span class="p">,</span> <span class="nx">ImagePlus</span> <span class="k">from</span> <span class="nx">ij</span><span class="p">.</span><span class="nx">gui</span> <span class="k">import</span> <span class="nx">GenericDialog</span> <span class="nx">def</span> <span class="nx">run</span><span class="p">():</span> <span class="nx">srcDir</span> <span class="o">=</span> <span class="nx">IJ</span><span class="p">.</span><span class="nx">getDirectory</span><span class="p">(</span><span class="dl">"</span><span class="s2">Input_directory</span><span class="dl">"</span><span class="p">)</span> <span class="k">if</span> <span class="nx">not</span> <span class="nx">srcDir</span><span class="p">:</span> <span class="k">return</span> <span class="nx">dstDir</span> <span class="o">=</span> <span class="nx">IJ</span><span class="p">.</span><span class="nx">getDirectory</span><span class="p">(</span><span class="dl">"</span><span class="s2">Output_directory</span><span class="dl">"</span><span class="p">)</span> <span class="k">if</span> <span class="nx">not</span> <span class="nx">dstDir</span><span class="p">:</span> <span class="k">return</span> <span class="nx">gd</span> <span class="o">=</span> <span class="nx">GenericDialog</span><span class="p">(</span><span class="dl">"</span><span class="s2">Process Folder</span><span class="dl">"</span><span class="p">)</span> <span class="nx">gd</span><span class="p">.</span><span class="nx">addStringField</span><span class="p">(</span><span class="dl">"</span><span class="s2">File_extension</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">.tif</span><span class="dl">"</span><span class="p">)</span> <span class="nx">gd</span><span class="p">.</span><span class="nx">addStringField</span><span class="p">(</span><span class="dl">"</span><span class="s2">File_name_contains</span><span class="dl">"</span><span class="p">,</span> <span class="dl">""</span><span class="p">)</span> <span class="nx">gd</span><span class="p">.</span><span class="nx">addCheckbox</span><span class="p">(</span><span class="dl">"</span><span class="s2">Keep directory structure when saving</span><span class="dl">"</span><span class="p">,</span> <span class="nx">True</span><span class="p">)</span> <span class="nx">gd</span><span class="p">.</span><span class="nx">showDialog</span><span class="p">()</span> <span class="k">if</span> <span class="nx">gd</span><span class="p">.</span><span class="nx">wasCanceled</span><span class="p">():</span> <span class="k">return</span> <span class="nx">ext</span> <span class="o">=</span> <span class="nx">gd</span><span class="p">.</span><span class="nx">getNextString</span><span class="p">()</span> <span class="nx">containString</span> <span class="o">=</span> <span class="nx">gd</span><span class="p">.</span><span class="nx">getNextString</span><span class="p">()</span> <span class="nx">keepDirectories</span> <span class="o">=</span> <span class="nx">gd</span><span class="p">.</span><span class="nx">getNextBoolean</span><span class="p">()</span> <span class="k">for</span> <span class="nx">root</span><span class="p">,</span> <span class="nx">directories</span><span class="p">,</span> <span class="nx">filenames</span> <span class="k">in</span> <span class="nx">os</span><span class="p">.</span><span class="nx">walk</span><span class="p">(</span><span class="nx">srcDir</span><span class="p">):</span> <span class="k">for</span> <span class="nx">filename</span> <span class="k">in</span> <span class="nx">filenames</span><span class="p">:</span> <span class="err">#</span> <span class="nx">Check</span> <span class="k">for</span> <span class="nx">file</span> <span class="nx">extension</span> <span class="k">if</span> <span class="nx">not</span> <span class="nx">filename</span><span class="p">.</span><span class="nx">endswith</span><span class="p">(</span><span class="nx">ext</span><span class="p">):</span> <span class="k">continue</span> <span class="err">#</span> <span class="nx">Check</span> <span class="k">for</span> <span class="nx">file</span> <span class="nx">name</span> <span class="nx">pattern</span> <span class="k">if</span> <span class="nx">containString</span> <span class="nx">not</span> <span class="k">in</span> <span class="nx">filename</span><span class="p">:</span> <span class="k">continue</span> <span class="nx">process</span><span class="p">(</span><span class="nx">srcDir</span><span class="p">,</span> <span class="nx">dstDir</span><span class="p">,</span> <span class="nx">root</span><span class="p">,</span> <span class="nx">filename</span><span class="p">,</span> <span class="nx">keepDirectories</span><span class="p">)</span> <span class="nx">def</span> <span class="nx">process</span><span class="p">(</span><span class="nx">srcDir</span><span class="p">,</span> <span class="nx">dstDir</span><span class="p">,</span> <span class="nx">currentDir</span><span class="p">,</span> <span class="nx">fileName</span><span class="p">,</span> <span class="nx">keepDirectories</span><span class="p">):</span> <span class="nx">print</span> <span class="dl">"</span><span class="s2">Processing:</span><span class="dl">"</span> <span class="err">#</span> <span class="nx">Opening</span> <span class="nx">the</span> <span class="nx">image</span> <span class="nx">print</span> <span class="dl">"</span><span class="s2">Open image file</span><span class="dl">"</span><span class="p">,</span> <span class="nx">fileName</span> <span class="nx">imp</span> <span class="o">=</span> <span class="nx">IJ</span><span class="p">.</span><span class="nx">openImage</span><span class="p">(</span><span class="nx">os</span><span class="p">.</span><span class="nx">path</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="nx">currentDir</span><span class="p">,</span> <span class="nx">fileName</span><span class="p">))</span> <span class="err">#</span> <span class="nx">Put</span> <span class="nx">your</span> <span class="nx">processing</span> <span class="nx">commands</span> <span class="nx">here</span><span class="o">!</span> <span class="err">#</span> <span class="nx">Saving</span> <span class="nx">the</span> <span class="nx">image</span> <span class="nx">saveDir</span> <span class="o">=</span> <span class="nx">currentDir</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="nx">srcDir</span><span class="p">,</span> <span class="nx">dstDir</span><span class="p">)</span> <span class="k">if</span> <span class="nx">keepDirectories</span> <span class="k">else</span> <span class="nx">dstDir</span> <span class="k">if</span> <span class="nx">not</span> <span class="nx">os</span><span class="p">.</span><span class="nx">path</span><span class="p">.</span><span class="nx">exists</span><span class="p">(</span><span class="nx">saveDir</span><span class="p">):</span> <span class="nx">os</span><span class="p">.</span><span class="nx">makedirs</span><span class="p">(</span><span class="nx">saveDir</span><span class="p">)</span> <span class="nx">print</span> <span class="dl">"</span><span class="s2">Saving to</span><span class="dl">"</span><span class="p">,</span> <span class="nx">saveDir</span> <span class="nx">IJ</span><span class="p">.</span><span class="nx">saveAs</span><span class="p">(</span><span class="nx">imp</span><span class="p">,</span> <span class="dl">"</span><span class="s2">Tiff</span><span class="dl">"</span><span class="p">,</span> <span class="nx">os</span><span class="p">.</span><span class="nx">path</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="nx">saveDir</span><span class="p">,</span> <span class="nx">fileName</span><span class="p">));</span> <span class="nx">imp</span><span class="p">.</span><span class="nx">close</span><span class="p">()</span> <span class="nx">run</span><span class="p">()</span> </code></pre></div></div> <ul> <li> <p>JavaScript</p> </li> <li> <p>Ruby</p> </li> <li> <p>Clojure</p> </li> <li> <p>BeanShell</p> </li> </ul> <h2 id="wait-a-given-amount-of-time-or-until-user-presses-ok">Wait a given amount of time, or until user presses OK</h2> <h4 id="macro-3">Macro</h4> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">wait</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span> </code></pre></div></div> <p>or</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">waitForUser</span><span class="p">();</span> </code></pre></div></div> <h4 id="javascript-2">JavaScript</h4> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">Thread</span><span class="p">.</span><span class="nx">sleep</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span> </code></pre></div></div> <p>or</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">new</span> <span class="nx">WaitForUserDialog</span><span class="p">(</span><span class="dl">"</span><span class="s2">Action required</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">Please press OK when done.</span><span class="dl">"</span><span class="p">).</span><span class="nx">show</span><span class="p">();</span> </code></pre></div></div> <ul> <li> <p>Python</p> </li> <li> <p>Ruby</p> </li> <li> <p>Clojure</p> </li> <li> <p>BeanShell</p> </li> </ul> <h2 id="select-multiple-rois-from-roi-manager-and-combine-them">Select multiple ROIs from ROI manager and combine them</h2> <h4 id="macro-4">Macro</h4> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">roiManager</span><span class="p">(</span><span class="dl">"</span><span class="s2">select</span><span class="dl">"</span><span class="p">,</span> <span class="nx">newArray</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">4</span><span class="p">));</span> <span class="nx">roiManager</span><span class="p">(</span><span class="dl">"</span><span class="s2">AND</span><span class="dl">"</span><span class="p">);</span> </code></pre></div></div> <h4 id="javascript-3">JavaScript</h4> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">importClass</span><span class="p">(</span><span class="nb">Packages</span><span class="p">.</span><span class="nx">ij</span><span class="p">.</span><span class="nx">plugin</span><span class="p">.</span><span class="nx">frame</span><span class="p">.</span><span class="nx">RoiManager</span><span class="p">);</span> <span class="nx">rm</span> <span class="o">=</span> <span class="nx">RoiManager</span><span class="p">.</span><span class="nx">getInstance</span><span class="p">();</span> <span class="nx">rm</span><span class="p">.</span><span class="nx">setSelectedIndexes</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">4</span><span class="p">]);</span> <span class="nx">rm</span><span class="p">.</span><span class="nx">runCommand</span><span class="p">(</span><span class="dl">"</span><span class="s2">AND</span><span class="dl">"</span><span class="p">);</span> </code></pre></div></div> <h4 id="python-3">Python</h4> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">from</span> <span class="nx">ij</span><span class="p">.</span><span class="nx">plugin</span><span class="p">.</span><span class="nx">frame</span> <span class="k">import</span> <span class="nx">RoiManager</span> <span class="nx">rm</span> <span class="o">=</span> <span class="nx">RoiManager</span><span class="p">.</span><span class="nx">getInstance</span><span class="p">()</span> <span class="nx">rm</span><span class="p">.</span><span class="nx">setSelectedIndexes</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">])</span> <span class="nx">rm</span><span class="p">.</span><span class="nx">runCommand</span><span class="p">(</span><span class="dl">"</span><span class="s2">AND</span><span class="dl">"</span><span class="p">)</span> </code></pre></div></div> <h4 id="beanshell-1">BeanShell</h4> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">import</span> <span class="nx">ij</span><span class="p">.</span><span class="nx">plugin</span><span class="p">.</span><span class="nx">frame</span><span class="p">.</span><span class="nx">RoiManager</span><span class="p">;</span> <span class="nx">rm</span> <span class="o">=</span> <span class="nx">RoiManager</span><span class="p">.</span><span class="nx">getInstance</span><span class="p">();</span> <span class="nx">rm</span><span class="p">.</span><span class="nx">setSelectedIndexes</span><span class="p">(</span><span class="k">new</span> <span class="nx">int</span><span class="p">[]</span> <span class="p">{</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">});</span> <span class="nx">rm</span><span class="p">.</span><span class="nx">runCommand</span><span class="p">(</span><span class="dl">"</span><span class="s2">AND</span><span class="dl">"</span><span class="p">);</span> </code></pre></div></div> <ul> <li> <p>Ruby</p> </li> <li> <p>Clojure</p> </li> </ul> <h2 id="unlocking-an-image">Unlocking an image</h2> <p>Sometimes things go wrong and all you see is “blabla.jpg is locked” when you try to process the image in some way. Then all you can do is to force-unlock the image, like so:</p> <h4 id="beanshell-2">BeanShell</h4> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">IJ</span><span class="p">.</span><span class="nx">getImage</span><span class="p">().</span><span class="nx">unlock</span><span class="p">();</span> </code></pre></div></div> <h2 id="scripting-sift">Scripting <a href="/plugins/feature-extraction">SIFT</a></h2> <p>The <em>Scale-Invariant Feature Transform</em> poses a relatively powerful way to reduce the complexity when trying to find matching parts of large images. Fiji has an implementation of this algorithm which you can use like so:</p> <h4 id="beanshell-3">BeanShell</h4> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">import</span> <span class="nx">java</span><span class="p">.</span><span class="nx">util</span><span class="p">.</span><span class="nx">ArrayList</span><span class="p">;</span> <span class="k">import</span> <span class="nx">mpicbg</span><span class="p">.</span><span class="nx">ij</span><span class="p">.</span><span class="nx">SIFT</span><span class="p">;</span> <span class="k">import</span> <span class="nx">mpicbg</span><span class="p">.</span><span class="nx">imagefeatures</span><span class="p">.</span><span class="nx">Feature</span><span class="p">;</span> <span class="k">import</span> <span class="nx">mpicbg</span><span class="p">.</span><span class="nx">imagefeatures</span><span class="p">.</span><span class="nx">FloatArray2DSIFT</span><span class="p">;</span> <span class="nx">param</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">FloatArray2DSIFT</span><span class="p">.</span><span class="nx">Param</span><span class="p">();</span> <span class="nx">sift</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">SIFT</span><span class="p">(</span><span class="k">new</span> <span class="nx">FloatArray2DSIFT</span><span class="p">(</span><span class="nx">param</span><span class="p">));</span> <span class="nx">features</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">ArrayList</span><span class="p">();</span> <span class="c1">// ''ip'' refers to an ImageProcessor</span> <span class="nx">sift</span><span class="p">.</span><span class="nx">extractFeatures</span><span class="p">(</span><span class="nx">ip</span><span class="p">,</span> <span class="nx">features</span><span class="p">);</span> <span class="c1">// print coordinates</span> <span class="k">for</span> <span class="p">(</span><span class="nx">Feature</span> <span class="nx">feature</span> <span class="p">:</span> <span class="nx">features</span><span class="p">)</span> <span class="nx">print</span><span class="p">(</span><span class="dl">"</span><span class="s2">x: </span><span class="dl">"</span> <span class="o">+</span> <span class="nx">feature</span><span class="p">.</span><span class="nx">location</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="dl">"</span><span class="s2">, y: </span><span class="dl">"</span> <span class="o">+</span> <span class="nx">feature</span><span class="p">.</span><span class="nx">location</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span> </code></pre></div></div> <p>For more information, please browse the <a href="http://javadoc.imagej.net/MPI-CBG/index.html?mpicbg/imagefeatures/Feature.html">Javadoc of the Feature class</a>.</p> <h2 id="plotting-charts-with-jfreechart">Plotting charts with JFreeChart</h2> <p><a href="http://www.jfree.org/jfreechart/">JFreeChart</a> is a Java library for creating various charts. You can create charts as interactive JFrames, display them as an ImagePlus, or write them to SVG format.</p> <h4 id="javascript-4">JavaScript</h4> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cm">/* JavaScript to test JFreeChart functionality */</span> <span class="nx">importPackage</span><span class="p">(</span><span class="nb">Packages</span><span class="p">.</span><span class="nx">org</span><span class="p">.</span><span class="nx">jfree</span><span class="p">.</span><span class="nx">chart</span><span class="p">);</span> <span class="nx">importPackage</span><span class="p">(</span><span class="nb">Packages</span><span class="p">.</span><span class="nx">org</span><span class="p">.</span><span class="nx">jfree</span><span class="p">.</span><span class="nx">chart</span><span class="p">.</span><span class="nx">plot</span><span class="p">);</span> <span class="nx">importPackage</span><span class="p">(</span><span class="nb">Packages</span><span class="p">.</span><span class="nx">org</span><span class="p">.</span><span class="nx">jfree</span><span class="p">.</span><span class="nx">chart</span><span class="p">.</span><span class="nx">axis</span><span class="p">);</span> <span class="nx">importPackage</span><span class="p">(</span><span class="nb">Packages</span><span class="p">.</span><span class="nx">org</span><span class="p">.</span><span class="nx">jfree</span><span class="p">.</span><span class="nx">chart</span><span class="p">.</span><span class="nx">encoders</span><span class="p">);</span> <span class="nx">importPackage</span><span class="p">(</span><span class="nb">Packages</span><span class="p">.</span><span class="nx">org</span><span class="p">.</span><span class="nx">jfree</span><span class="p">.</span><span class="nx">chart</span><span class="p">.</span><span class="nx">renderer</span><span class="p">.</span><span class="nx">category</span><span class="p">);</span> <span class="nx">importPackage</span><span class="p">(</span><span class="nb">Packages</span><span class="p">.</span><span class="nx">java</span><span class="p">.</span><span class="nx">awt</span><span class="p">);</span> <span class="nx">importPackage</span><span class="p">(</span><span class="nb">Packages</span><span class="p">.</span><span class="nx">java</span><span class="p">.</span><span class="nx">awt</span><span class="p">.</span><span class="nx">geom</span><span class="p">);</span> <span class="nx">importPackage</span><span class="p">(</span><span class="nb">Packages</span><span class="p">.</span><span class="nx">java</span><span class="p">.</span><span class="nx">io</span><span class="p">);</span> <span class="nx">importPackage</span><span class="p">(</span><span class="nb">Packages</span><span class="p">.</span><span class="nx">org</span><span class="p">.</span><span class="nx">jfree</span><span class="p">.</span><span class="nx">ui</span><span class="p">);</span> <span class="nx">importPackage</span><span class="p">(</span><span class="nb">Packages</span><span class="p">.</span><span class="nx">org</span><span class="p">.</span><span class="nx">jfree</span><span class="p">.</span><span class="nx">data</span><span class="p">.</span><span class="nx">category</span><span class="p">);</span> <span class="nx">importPackage</span><span class="p">(</span><span class="nb">Packages</span><span class="p">.</span><span class="nx">org</span><span class="p">.</span><span class="nx">jfree</span><span class="p">.</span><span class="nx">data</span><span class="p">.</span><span class="nx">statistics</span><span class="p">);</span> <span class="nx">importPackage</span><span class="p">(</span><span class="nb">Packages</span><span class="p">.</span><span class="nx">org</span><span class="p">.</span><span class="nx">apache</span><span class="p">.</span><span class="nx">batik</span><span class="p">.</span><span class="nx">dom</span><span class="p">);</span> <span class="nx">importPackage</span><span class="p">(</span><span class="nb">Packages</span><span class="p">.</span><span class="nx">org</span><span class="p">.</span><span class="nx">apache</span><span class="p">.</span><span class="nx">batik</span><span class="p">.</span><span class="nx">svggen</span><span class="p">);</span> <span class="kd">var</span> <span class="nx">dataset</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">DefaultStatisticalCategoryDataset</span><span class="p">();</span> <span class="c1">// dataset.add(Mean, StdDev, "Series", "Condition")</span> <span class="nx">dataset</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="mf">15.0</span><span class="p">,</span> <span class="mf">2.4</span><span class="p">,</span> <span class="dl">"</span><span class="s2">Row 1</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">Column 1</span><span class="dl">"</span><span class="p">);</span> <span class="nx">dataset</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="mf">15.0</span><span class="p">,</span> <span class="mf">4.4</span><span class="p">,</span> <span class="dl">"</span><span class="s2">Row 1</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">Column 2</span><span class="dl">"</span><span class="p">);</span> <span class="nx">dataset</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="mf">13.0</span><span class="p">,</span> <span class="mf">2.1</span><span class="p">,</span> <span class="dl">"</span><span class="s2">Row 1</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">Column 3</span><span class="dl">"</span><span class="p">);</span> <span class="nx">dataset</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="mf">7.0</span><span class="p">,</span> <span class="mf">1.3</span><span class="p">,</span> <span class="dl">"</span><span class="s2">Row 1</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">Column 4</span><span class="dl">"</span><span class="p">);</span> <span class="nx">dataset</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="mf">2.0</span><span class="p">,</span> <span class="mf">2.4</span><span class="p">,</span> <span class="dl">"</span><span class="s2">Row 2</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">Column 1</span><span class="dl">"</span><span class="p">);</span> <span class="nx">dataset</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="mf">18.0</span><span class="p">,</span> <span class="mf">4.4</span><span class="p">,</span> <span class="dl">"</span><span class="s2">Row 2</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">Column 2</span><span class="dl">"</span><span class="p">);</span> <span class="nx">dataset</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="mf">28.0</span><span class="p">,</span> <span class="mf">2.1</span><span class="p">,</span> <span class="dl">"</span><span class="s2">Row 2</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">Column 3</span><span class="dl">"</span><span class="p">);</span> <span class="nx">dataset</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="mf">17.0</span><span class="p">,</span> <span class="mf">1.3</span><span class="p">,</span> <span class="dl">"</span><span class="s2">Row 2</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">Column 4</span><span class="dl">"</span><span class="p">);</span> <span class="kd">var</span> <span class="nx">chart</span> <span class="o">=</span> <span class="nx">ChartFactory</span><span class="p">.</span><span class="nx">createLineChart</span><span class="p">(</span> <span class="kc">null</span><span class="p">,</span> <span class="c1">// chart title</span> <span class="dl">"</span><span class="s2">Treatment</span><span class="dl">"</span><span class="p">,</span> <span class="c1">// domain axis label</span> <span class="dl">"</span><span class="s2">Measurement</span><span class="dl">"</span><span class="p">,</span> <span class="c1">// range axis label</span> <span class="nx">dataset</span><span class="p">,</span> <span class="c1">// data</span> <span class="nx">PlotOrientation</span><span class="p">.</span><span class="nx">VERTICAL</span><span class="p">,</span> <span class="c1">// orientation</span> <span class="kc">false</span><span class="p">,</span> <span class="c1">// include legend</span> <span class="kc">true</span><span class="p">,</span> <span class="c1">// tooltips</span> <span class="kc">false</span> <span class="c1">// urls</span> <span class="p">);</span> <span class="c1">// set the background color for the chart...</span> <span class="nx">chart</span><span class="p">.</span><span class="nx">setBackgroundPaint</span><span class="p">(</span><span class="nx">Color</span><span class="p">.</span><span class="nx">white</span><span class="p">);</span> <span class="kd">var</span> <span class="nx">plot</span> <span class="o">=</span> <span class="nx">chart</span><span class="p">.</span><span class="nx">getPlot</span><span class="p">();</span> <span class="nx">plot</span><span class="p">.</span><span class="nx">setBackgroundPaint</span><span class="p">(</span><span class="nx">Color</span><span class="p">.</span><span class="nx">white</span><span class="p">);</span> <span class="nx">plot</span><span class="p">.</span><span class="nx">setRangeGridlinesVisible</span><span class="p">(</span><span class="kc">false</span><span class="p">);</span> <span class="nx">plot</span><span class="p">.</span><span class="nx">setAxisOffset</span><span class="p">(</span><span class="nx">RectangleInsets</span><span class="p">.</span><span class="nx">ZERO_INSETS</span><span class="p">);</span> <span class="c1">// customise the range axis...</span> <span class="kd">var</span> <span class="nx">rangeAxis</span> <span class="o">=</span> <span class="nx">plot</span><span class="p">.</span><span class="nx">getRangeAxis</span><span class="p">();</span> <span class="nx">rangeAxis</span><span class="p">.</span><span class="nx">setStandardTickUnits</span><span class="p">(</span><span class="nx">NumberAxis</span><span class="p">.</span><span class="nx">createIntegerTickUnits</span><span class="p">());</span> <span class="nx">rangeAxis</span><span class="p">.</span><span class="nx">setAutoRangeIncludesZero</span><span class="p">(</span><span class="kc">true</span><span class="p">);</span> <span class="nx">rangeAxis</span><span class="p">.</span><span class="nx">setRange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">40</span><span class="p">);</span> <span class="c1">// customise the renderer...</span> <span class="kd">var</span> <span class="nx">renderer</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">StatisticalBarRenderer</span><span class="p">();</span> <span class="nx">renderer</span><span class="p">.</span><span class="nx">setErrorIndicatorPaint</span><span class="p">(</span><span class="nx">Color</span><span class="p">.</span><span class="nx">black</span><span class="p">);</span> <span class="nx">renderer</span><span class="p">.</span><span class="nx">setSeriesOutlinePaint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="nx">Color</span><span class="p">.</span><span class="nx">black</span><span class="p">);</span> <span class="nx">renderer</span><span class="p">.</span><span class="nx">setSeriesOutlinePaint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="nx">Color</span><span class="p">.</span><span class="nx">black</span><span class="p">);</span> <span class="nx">renderer</span><span class="p">.</span><span class="nx">setSeriesPaint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="nx">Color</span><span class="p">.</span><span class="nx">black</span><span class="p">);</span> <span class="nx">renderer</span><span class="p">.</span><span class="nx">setSeriesPaint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="nx">Color</span><span class="p">.</span><span class="nx">white</span><span class="p">);</span> <span class="nx">renderer</span><span class="p">.</span><span class="nx">setItemMargin</span><span class="p">(</span><span class="mf">0.0</span><span class="p">);</span> <span class="nx">plot</span><span class="p">.</span><span class="nx">setRenderer</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="nx">renderer</span><span class="p">);</span> <span class="nx">renderer</span><span class="p">.</span><span class="nx">setDrawBarOutline</span><span class="p">(</span><span class="kc">true</span><span class="p">);</span> <span class="nx">bi</span> <span class="o">=</span> <span class="nx">chart</span><span class="p">.</span><span class="nx">createBufferedImage</span><span class="p">(</span><span class="mi">600</span><span class="p">,</span> <span class="mi">400</span><span class="p">);</span> <span class="nx">imp</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">ImagePlus</span><span class="p">(</span><span class="dl">"</span><span class="s2">Chart Test</span><span class="dl">"</span><span class="p">,</span> <span class="nx">bi</span><span class="p">);</span> <span class="nx">imp</span><span class="p">.</span><span class="nx">show</span><span class="p">();</span> <span class="c1">// Create SVG image</span> <span class="c1">// Get a DOMImplementation and create an XML document</span> <span class="kd">var</span> <span class="nx">domImpl</span> <span class="o">=</span> <span class="nx">GenericDOMImplementation</span><span class="p">.</span><span class="nx">getDOMImplementation</span><span class="p">();</span> <span class="kd">var</span> <span class="nb">document</span> <span class="o">=</span> <span class="nx">domImpl</span><span class="p">.</span><span class="nx">createDocument</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="dl">"</span><span class="s2">svg</span><span class="dl">"</span><span class="p">,</span> <span class="kc">null</span><span class="p">);</span> <span class="c1">// Create an instance of the SVG Generator</span> <span class="kd">var</span> <span class="nx">svgGenerator</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">SVGGraphics2D</span><span class="p">(</span><span class="nb">document</span><span class="p">);</span> <span class="c1">// draw the chart in the SVG generator</span> <span class="kd">var</span> <span class="nx">bounds</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Rectangle</span><span class="p">(</span><span class="mi">600</span><span class="p">,</span> <span class="mi">400</span><span class="p">);</span> <span class="nx">chart</span><span class="p">.</span><span class="nx">draw</span><span class="p">(</span><span class="nx">svgGenerator</span><span class="p">,</span> <span class="nx">bounds</span><span class="p">);</span> <span class="kd">var</span> <span class="nx">dir</span> <span class="o">=</span> <span class="nx">IJ</span><span class="p">.</span><span class="nx">getDirectory</span><span class="p">(</span><span class="dl">"</span><span class="s2">Where should the svg file be saved?</span><span class="dl">"</span><span class="p">);</span> <span class="c1">// Write svg file</span> <span class="kd">var</span> <span class="nx">svgFile</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">File</span><span class="p">(</span><span class="nx">dir</span> <span class="o">+</span> <span class="dl">"</span><span class="s2">test.svg</span><span class="dl">"</span><span class="p">);</span> <span class="kd">var</span> <span class="nx">outputStream</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">FileOutputStream</span><span class="p">(</span><span class="nx">svgFile</span><span class="p">);</span> <span class="kd">var</span> <span class="nx">out</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">OutputStreamWriter</span><span class="p">(</span><span class="nx">outputStream</span><span class="p">,</span> <span class="dl">"</span><span class="s2">UTF-8</span><span class="dl">"</span><span class="p">);</span> <span class="nx">svgGenerator</span><span class="p">.</span><span class="nx">stream</span><span class="p">(</span><span class="nx">out</span><span class="p">,</span> <span class="kc">true</span> <span class="cm">/* use css */</span><span class="p">);</span> <span class="nx">outputStream</span><span class="p">.</span><span class="nx">flush</span><span class="p">();</span> <span class="nx">outputStream</span><span class="p">.</span><span class="nx">close</span><span class="p">();</span> </code></pre></div></div> <h2 id="writing-out-movie-files-with-javacv">Writing out movie files with JavaCV</h2> <p><a href="https://github.com/bytedeco/javacv">JavaCV</a> is a Java wrapper around OpenCV and FFMPEG. You will have to unpack the libraries into the <code class="language-plaintext highlighter-rouge">lib/<platform>/</code> folder of your Fiji installation (e.g. <code class="language-plaintext highlighter-rouge">Fiji.app/lib/linux64/</code>) to let JavaCV find the native libraries (e.g. unpack <code class="language-plaintext highlighter-rouge">ffmpeg-macosx-x86_64.jar</code>’s <code class="language-plaintext highlighter-rouge">.dylib</code> files directly into <code class="language-plaintext highlighter-rouge">Fiji.app/lib/macosx/</code>) <strong>before</strong> starting Fiji.</p> <h4 id="beanshell-4">BeanShell</h4> <div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cm">/* * A simple example how to write out a movie from a possibly virtual * image stack using JavaCV. * * Licensed under CC-BY-SA 4.0 * by Johannes Schindelin on September 16th, 2014 */</span> <span class="n">path</span> <span class="o">=</span> <span class="s">"/tmp/change-this-name.flv"</span><span class="o">;</span> <span class="n">frameRate</span> <span class="o">=</span> <span class="mf">25.0</span><span class="o">;</span> <span class="n">videoBitrate</span> <span class="o">=</span> <span class="mi">400</span> <span class="o">*</span> <span class="mi">1000</span><span class="o">;</span> <span class="c1">// if you have not installed JavaCV into your jars/ directory:</span> <span class="kn">import</span> <span class="nn">java.io.File</span><span class="o">;</span> <span class="n">binDir</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">File</span><span class="o">(</span><span class="nc">System</span><span class="o">.</span><span class="na">getProperty</span><span class="o">(</span><span class="s">"user.home"</span><span class="o">)</span> <span class="o">+</span> <span class="s">"/downloads/javacv-bin/"</span><span class="o">);</span> <span class="k">if</span> <span class="o">(</span><span class="n">binDir</span><span class="o">.</span><span class="na">isDirectory</span><span class="o">())</span> <span class="o">{</span> <span class="n">jars</span> <span class="o">=</span> <span class="n">binDir</span><span class="o">.</span><span class="na">list</span><span class="o">();</span> <span class="k">for</span> <span class="o">(</span><span class="nc">String</span> <span class="n">jar</span> <span class="o">:</span> <span class="n">jars</span><span class="o">)</span> <span class="o">{</span> <span class="k">if</span> <span class="o">(</span><span class="n">jar</span><span class="o">.</span><span class="na">endsWith</span><span class="o">(</span><span class="s">".jar"</span><span class="o">))</span> <span class="o">{</span> <span class="n">addClassPath</span><span class="o">(</span><span class="k">new</span> <span class="nc">File</span><span class="o">(</span><span class="n">binDir</span><span class="o">,</span> <span class="n">jar</span><span class="o">).</span><span class="na">getPath</span><span class="o">());</span> <span class="o">}</span> <span class="o">}</span> <span class="o">}</span> <span class="c1">// use JavaCV to write out the currently active 3D image</span> <span class="kn">import</span> <span class="nn">ij.IJ</span><span class="o">;</span> <span class="kn">import</span> <span class="nn">org.bytedeco.javacv.FFmpegFrameRecorder</span><span class="o">;</span> <span class="kn">import</span> <span class="nn">org.bytedeco.javacpp.opencv_core.IplImage</span><span class="o">;</span> <span class="kt">void</span> <span class="nf">saveImageAsMovie</span><span class="o">(</span><span class="n">image</span><span class="o">,</span> <span class="n">path</span><span class="o">,</span> <span class="n">frameRate</span><span class="o">,</span> <span class="n">videoBitrate</span><span class="o">)</span> <span class="o">{</span> <span class="k">if</span> <span class="o">(</span><span class="n">image</span> <span class="o">==</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span> <span class="no">IJ</span><span class="o">.</span><span class="na">error</span><span class="o">(</span><span class="s">"No active image!"</span><span class="o">);</span> <span class="k">return</span><span class="o">;</span> <span class="o">}</span> <span class="n">width</span> <span class="o">=</span> <span class="n">image</span><span class="o">.</span><span class="na">getWidth</span><span class="o">();</span> <span class="n">height</span> <span class="o">=</span> <span class="n">image</span><span class="o">.</span><span class="na">getHeight</span><span class="o">();</span> <span class="n">stack</span> <span class="o">=</span> <span class="n">image</span><span class="o">.</span><span class="na">getStack</span><span class="o">();</span> <span class="n">recorder</span> <span class="o">=</span> <span class="nc">FFmpegFrameRecorder</span><span class="o">.</span><span class="na">createDefault</span><span class="o">(</span><span class="n">path</span><span class="o">,</span> <span class="o">(</span><span class="kt">int</span><span class="o">)</span> <span class="n">width</span><span class="o">,</span> <span class="o">(</span><span class="kt">int</span><span class="o">)</span> <span class="n">height</span><span class="o">);</span> <span class="n">recorder</span><span class="o">.</span><span class="na">setFormat</span><span class="o">(</span><span class="s">"flv"</span><span class="o">);</span> <span class="n">recorder</span><span class="o">.</span><span class="na">setFrameRate</span><span class="o">(</span><span class="n">frameRate</span><span class="o">);</span> <span class="n">recorder</span><span class="o">.</span><span class="na">setVideoBitrate</span><span class="o">(</span><span class="n">videoBitrate</span><span class="o">);</span> <span class="n">recorder</span><span class="o">.</span><span class="na">start</span><span class="o">();</span> <span class="k">for</span> <span class="o">(</span><span class="n">slice</span> <span class="o">=</span> <span class="mi">1</span><span class="o">;</span> <span class="n">slice</span> <span class="o"><=</span> <span class="n">stack</span><span class="o">.</span><span class="na">getSize</span><span class="o">();</span> <span class="n">slice</span><span class="o">++)</span> <span class="o">{</span> <span class="n">ip</span> <span class="o">=</span> <span class="n">stack</span><span class="o">.</span><span class="na">getProcessor</span><span class="o">(</span><span class="n">slice</span><span class="o">);</span> <span class="n">recorder</span><span class="o">.</span><span class="na">record</span><span class="o">(</span><span class="nc">IplImage</span><span class="o">.</span><span class="na">createFrom</span><span class="o">(</span><span class="n">ip</span><span class="o">.</span><span class="na">getBufferedImage</span><span class="o">()));</span> <span class="o">}</span> <span class="n">recorder</span><span class="o">.</span><span class="na">stop</span><span class="o">();</span> <span class="n">recorder</span><span class="o">.</span><span class="na">release</span><span class="o">();</span> <span class="o">}</span> <span class="k">try</span> <span class="o">{</span> <span class="n">saveImageAsMovie</span><span class="o">(</span><span class="no">IJ</span><span class="o">.</span><span class="na">getImage</span><span class="o">(),</span> <span class="n">path</span><span class="o">,</span> <span class="n">frameRate</span><span class="o">,</span> <span class="n">videoBitrate</span><span class="o">);</span> <span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="nc">Throwable</span> <span class="n">t</span><span class="o">)</span> <span class="o">{</span> <span class="no">IJ</span><span class="o">.</span><span class="na">handleException</span><span class="o">(</span><span class="n">t</span><span class="o">);</span> <span class="o">}</span> </code></pre></div></div> </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 href="/scripting/parameters">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 class="current-page">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/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>