CONTEST: New ImageJ logo!



I like the simple, two colored style of logos. We just need to take care that we are not getting too close to Juventus Turin :wink:


Here are two ideas:

  1. a variation of single ij
    considering the two squares representing binary numbers we have: 01 or 10, so depending which pixel one you count on or off you got 1 or 2 … a bit like ij-legacy and the new stuff :slight_smile:

  2. playing with recursion and symmetry:

    The “i” got pressed a bit into that pattern, so now you need maybe a bit too imagination to quickly recognize it. Not sure how good this works for small sizes, through, there I might need to tweak the proportions.

As you can see, I am not good with colors, so feel free to try to add some.


Old school retro look :slight_smile: I took from the idea of @etarena and @christlet to have an intersection looking like a pixel, which is a nice touch


I’d opt for the following properties of a new icon/logo:

  • flat design (i.e. no gradients, shadows, etc.)
  • scalability (i.e. vector graphics ideally)
  • recognizability (i.e. it should somehow remind of a microscope, as we carry along the history of ImageJ 1.x)
  • scriptability (i.e. it should be possible to generate the logo with a simple script within ImageJ, recursively :slight_smile:)

I really like the suggestion by @frauzufall above, but would prefer a vertical microscope that resembles the original ImageJ icon a bit better.

Here’s a simple suggestion:


In a monochrome setting, this could be rendered e.g. like this:

image image

Colors are of course open for discussion. Also the icon could be centered a bit better than in these quick trials…


Hey all, just wanted to share some of my logo drafting. Easily recognisable icon and the same icon with ImageJ text, for different purposes. Available in all file formats needed.

The icon has a blue nucleus and represents an objective. Hope you like it! :slight_smile:



I played around with the new ImgLib2 ROIs (thanks @awalter17!) and came up with the following script to generate my suggested logo above (note that this currently requires imglib2-roi.jar built from the shape-roi branch; and due to API changes, imagej-ops has to be moved out of the way for it to work in Fiji):

/* Create logo mask */

import net.imglib2.roi.Masks
import net.imglib2.roi.geom.GeomMasks

I = GeomMasks.closedBox([30.5, 10.5] as double[], [40.5, 60.5] as double[])

Jbar      = GeomMasks.closedBox    ([45.5, 30.5] as double[], [70.5, 40.5] as double[])
Jstem     = GeomMasks.closedBox    ([60.5, 30.5] as double[], [70.5, 70.5] as double[])
Jouter    = GeomMasks.OpenSphere   ([50.5, 70.5] as double[], 20.0)
Jinner    = GeomMasks.closedSphere ([50.5, 70.5] as double[], 10.0)
Jclipping = GeomMasks.openBox      ([ 0.5, 70.5] as double[], [100.5, 100.5] as double[])

J = Jouter.minus(Jinner).and(Jclipping).or(Jbar).or(Jstem)

slide  = GeomMasks.closedBox([25.5, 66.5] as double[], [45.5, 68.5] as double[])

These shapes can then be combined with each other (and an optional frame):

/* Create frame */

frame1 = GeomMasks.closedBox([ 0.5,  0.5] as double[], [100.5, 100.5] as double[])
frame2 = GeomMasks.closedBox([ 1.5,  1.5] as double[], [99.5, 99.5] as double[])
frame  = frame1.minus(frame2)

/* Combine mask */

mask = Masks.toRealRandomAccessibleRealInterval(I.or(J).or(slide).or(frame))

… and then rendered in BigDataViewer, or using ImgLib Views

/* Show combined mask in BigDataViewer */

import bdv.util.Bdv
import bdv.util.BdvFunctions
import net.imglib2.FinalInterval
				new FinalInterval(
						[mask.realMin( 0 ), mask.realMin( 1 ) ] as long[],
						[mask.realMax( 0 ), mask.realMax( 1 ) ] as long[] ),
				"2D Mask",
				Bdv.options() )

/* Use Imglib2 Views to raster the mask */

#@OUTPUT img
import net.imglib2.view.Views
import net.imglib2.FinalInterval

img = Views.interval(Views.raster(mask), new FinalInterval(
						[mask.realMin( 0 ), mask.realMin( 1 ) ] as long[],
						[mask.realMax( 0 ), mask.realMax( 1 ) ] as long[] )

… resulting in a binary image, which can then be colorized at will:

image - image - image - image

(Note that I had to add 0.5 to all integer position to work around rastering effects, and then crop the first pixel row and column in order to get the above image. I appreciate any suggestions and improvements on this.)

VOTE NOW for the New ImageJ Logo!



7 posts were split to a new topic: Inability to see images since Dec 30

Inability to see images since Dec 30
Inability to see images since Dec 30

So it seems that I can’t save any edits to any posts right now (the ‘Saving…’ operation never completes).

So for anyone who is having trouble loading images, here is a screenshot of my post. The thumbnail below links through to the full-size version on Imgur.


By the way, who did the current ImageJ2 logo ? Is it based on a real microscope ?


Hi guys,

here’s my suggestion for the new IJ logo.

Maybe as a quick explanation:

  • the dots represent the basic shape of the “Lena” histogram
  • the colored dots represent the initials “I” and “J”



nerdy stuff :smile:
----------- 20 characters…


A post was split to a new topic: VR headsets and ImageJ


See the readme.txt here.


2 posts were merged into an existing topic: Inability to see images since Dec 30


Hi all,

My contribution may be redundent, since I can’t see many of the previous post.

Just using the letter “i” and “j”, separated by a dot to mimic the microscope of the original post.

I made a small script in macro language so you can generate different size and color layout by yourself.

OldSchool (colors closer to the original logo)



// @Integer(label="Image Size",value=256) imageSize
// @String(label="Color Scheme",choices={"rgb","fashion","oldschool"}) colorScheme
// @Boolean(label="Dot as Rectangle on letters") dotAsRectangle

lut_list = getList("LUTs");

newImage("IJ.logo", "8-bit white", imageSize, imageSize, 1);

short_size = imageSize/8;
margin = short_size/2;
long_size = 4*short_size;

total_w = 4*margin+3*short_size;
total_h = 4*margin+2*short_size+long_size;

x_offset = (imageSize-total_w)/2 ;
y_offset = (imageSize-total_h)/2 ;

//set gray level
c_dot = 125;
c_main = 5;

if (colorScheme == "rgb"){
	ci = 200;
	cm = 100;
	cj = 40;
} else if (colorScheme == "fashion") {
	ci = 175;
	cm = 125;
	cj = 55;
} else if (colorScheme == "oldschool") {
	ci = 125;
	cm = 125;
	cj = 125;

//making i
// the "."

if (dotAsRectangle){
	makeColoredRectangle(ci	,margin,	margin	, short_size, short_size);
} else {
	makeColoredOval(ci	,margin,	margin	, short_size, short_size);

// the rest
y_mainI = margin+short_size+margin;
makeColoredRectangle(c_main	,margin, 	y_mainI, short_size, long_size);

//middle "."
x_middleSpot = margin+short_size+margin;
y_middleSpot = y_mainI + long_size/2 ;
if (!dotAsRectangle){
	makeColoredRectangle(cm,x_middleSpot , y_middleSpot ,short_size,short_size);
} else {
	makeColoredOval(cm,x_middleSpot , y_middleSpot ,short_size,short_size);

// making j
// the "." of j
x_j_dot = x_middleSpot + short_size + margin;
y_j_dot = y_mainI;

if (dotAsRectangle){
	makeColoredRectangle(cj, x_j_dot , y_j_dot ,short_size,short_size);
} else {
	makeColoredOval(cj, x_j_dot , y_j_dot ,short_size,short_size);

// the "rest" of j
y_j_horBar = y_mainI + long_size + margin ;
makeColoredRectangle(c_main	, margin, y_j_horBar	,long_size-short_size, short_size);

x_j_vertBar = margin + long_size-short_size;
y_j_vertBar = y_j_dot + short_size + margin;
makeColoredRectangle(c_main	, x_j_vertBar, y_j_vertBar, short_size	,long_size);

run("Select None");

if (colorScheme == "rgb"){
	run("16 colors");
} else if (colorScheme == "fashion") {
	run("16 colors");
} else if (colorScheme == "oldschool") {
	run("Yellow Hot");

function makeColoredRectangle(c,x,y,w,h){
	makeRectangle(x+x_offset, y+y_offset, w, h);
	setForegroundColor(c, c, c);

function makeColoredOval(c,x,y,w,h){
	makeOval(x+x_offset, y+y_offset, w, h);
	setForegroundColor(c, c, c);


Apologies again for all the problems with images over the past few days. All images should now be restored; please speak up if you notice any still missing. (Although: note that the forum will be down soon for several hours; see this post for details.)



Hi all,

My submission for your consideration. . .


Bright field scope without all the fuss