Why ImageJ?

Easy to Use

Install ImageJ in one-click, Fiji installs all of its plugins, features an automatic updater, and offers comprehensive documentation.

Powerful

ImageJ offers robust extensibility, harnessing the power of hundreds of plugins to assist with any of your imaging needs.

Free & Open Source

ImageJ is an open source project hosted on GitHub, developed and written by the community.


User Resources

Looking for user resources?


Developer Resources

Looking for developer resources?

let first = true;
const MAX_PLUGIN_COUNT = 6; // controls max number of tabs shown

$.getJSON("/plugins.json", function(json) {
  let plugins = json.plugins;
  // Fisher-Yates shuffle; see: https://javascript.info/task/shuffle
  for (let i = plugins.length - 1; i > 0; i--) {
    let j = Math.floor(Math.random() * (i + 1)); // random index from 0 to i
    [plugins[i], plugins[j]] = [plugins[j], plugins[i]]; // swap elements
  }
  if (plugins.length > MAX_PLUGIN_COUNT){
    plugins = plugins.slice(0,MAX_PLUGIN_COUNT);
  }
  plugins.map(function(val){
    // generating the tab header
    let nameSlug = 'plugin-' + slugify(val.name);
    let tabString = `
      <li class="nav-item">
        <a class="nav-link ${first ? 'active' : ''}" id="${nameSlug}-tab-header" data-toggle="tab" href="#${nameSlug}-tab" role="tab" aria-controls="${nameSlug}" aria-selected="true">${val.name}</a>
      </li>
    `

    // generating the tab panel
    let paneString = `
    <div class="tab-pane fade ${first ? 'show active' : ''}" id="${nameSlug}-tab" role="tabpanel" aria-labelledby="${nameSlug}-tab-header">
      ${val.imgUrl ?
        '<img class="img-fluid img-plugin" alt="image showing ' + val.name + ' in action" src = "' + val.imgUrl + '" /> <hr />'
        : ''
      }
      <h5 class="card-title">${val.name}</h5>
      <p class="card-text">${val.description}</p>
      <a href="${val.link}" class="btn btn-primary">More information</a>
    </div>
    `
    $("#plugin-tabs").append(tabString);
    $("#plugin-tab-content").append(paneString);


    if (first){
      first = false;
    }
  })
});   </script>