Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2030 commits
Select commit Hold shift + click to select a range
02a6e48
2019.12.01 (1.52s72; stacks and updateAndDraw)
rasband Dec 2, 2019
c104594
2019.12.02 (1.52s73; Image window placement)
rasband Dec 2, 2019
df8e0c5
2019.12.04 (1.52s76; Overlay translation)
rasband Dec 5, 2019
7c88b74
2019.12.09 (1.52s82; Process>FFT>Custom Filter)
rasband Dec 9, 2019
9cb83a4
2019.12.10 (1.52s; Release version)
rasband Dec 11, 2019
cac4d59
2019.12.12 (1.52t3; String functions)
rasband Dec 12, 2019
af3b08d
2019.12.12 (1.52t4; Text tool regression)
rasband Dec 13, 2019
bc097af
2019.12.14 (1.52t6; Superscripts in plots)
rasband Dec 14, 2019
96f9ab1
2019.12.15 (1.52t7; MacOS Hide command)
rasband Dec 16, 2019
d42c866
2019.12.20 (1.52t13; Terabyte VirtualStack)
rasband Dec 21, 2019
5beb20e
2019.12.27 (1.52t15; Line to Area)
rasband Dec 27, 2019
113b9ab
2020.01.03 (1.52t22; Non-blocking filter dialogs)
rasband Jan 4, 2020
f0390e8
2020.01.08 (1.52t23; Movie FFMPEG)
rasband Jan 9, 2020
c0e553b
2020.01.14 (1.52t24; Flatten hyperstack)
rasband Jan 14, 2020
c0be50b
2020.01.15 (1.52t26; ROI groups)
rasband Jan 16, 2020
63139d4
2020.01.19 (1.52t33; Default stroke width)
rasband Jan 19, 2020
6fe5f69
2020.01.19 (1.52t35; Default stroke width)
rasband Jan 20, 2020
00ecd40
2020.01.20 (1.52t37; Larger selection handles)
rasband Jan 21, 2020
1c0759f
2020.01.21 (1.52t38; Larger selection handles)
rasband Jan 22, 2020
a3b111d
2020.01.24 (1.52t44; Point Tool macro regression)
rasband Jan 25, 2020
d73fe5c
2020.01.26 (1.52t46; Recording regression)
rasband Jan 26, 2020
850870a
2020.01.26 (1.52t47; Measure and ROI group)
rasband Jan 27, 2020
70484d7
2020.01.30 (1.52t51; Non-blocking dialogs)
rasband Jan 31, 2020
36919b2
2020.01.30 (1.52t; Release version)
rasband Feb 2, 2020
ac4a4d7
2020.02.12 (1.52u7; ROI menu tool)
rasband Feb 12, 2020
c1384b1
2020.02.15 (1.52u11; Plot.setWindowSize)
rasband Feb 15, 2020
a4b0cdb
2020.02.17 (1.52u14; Edit>Copy to System)
rasband Feb 18, 2020
fb097a1
2020.02.19 (1.52u17; TextRoi)
rasband Feb 19, 2020
d2c0139
2020.02.20 (1.52u18; ROI Menu Tool>Add Shortcuts)
rasband Feb 20, 2020
962d118
2020.02.21 (1.52u20; Particle analyzer headless exception)
rasband Feb 21, 2020
259bb87
2020.02.23 (1.52u23; Overlay Text example)
rasband Feb 23, 2020
e91304b
2020.02.24 (1.52u24; Fit Rectangle)
rasband Feb 24, 2020
89d1e50
2020.02.26 (1.52u26; Overlay Text example)
rasband Feb 26, 2020
834fa79
2020.02.27 (1.52u28; ImagePlus.resize)
rasband Feb 28, 2020
c1e82a1
2020.02.28 (1.52u29; Empty tables)
rasband Feb 29, 2020
a6ce76d
2020.03.05 (1.52u33; ROI enhancements)
rasband Mar 5, 2020
57372b1
2020.03.10 (1.52u36; Drag and drop of .svs files)
rasband Mar 10, 2020
3f68492
2020.03.12 (1.52u38; ImageListener interface)
rasband Mar 12, 2020
b7bd9ce
2020.03.13 (1.52u40; Edit>Selection>Enlarge)
rasband Mar 13, 2020
afd00a7
2020.03.15 (1.52u41; Math macro functions)
rasband Mar 15, 2020
506ec50
2020.03.17 (1.52u; Release version)
rasband Mar 18, 2020
da057f5
2020.03.18 (1.52v1; Line length regression)
rasband Mar 18, 2020
49d95ea
2020.03.22 (1.52v4; Edit>Selection>Scale)
rasband Mar 22, 2020
c4950ee
2020.03.24 (1.52v5; ImageProcessor.skeletonize)
rasband Mar 24, 2020
b5d0483
2020.03.25 (1.52v6; Polygon ROI regression)
rasband Mar 25, 2020
57c1f6b
2020.03.27 (1.52v8; Macro error call stacks)
rasband Mar 27, 2020
6452a8e
2020.03.30 (1.52v10; Viridis LUT)
rasband Mar 30, 2020
b1026fc
2020.03.31 (1.52v11; Iterable RoiManager)
rasband Mar 31, 2020
baef0ca
2020.04.01 (1.52v12; GenericDialog exception)
rasband Apr 1, 2020
a97c6b3
2020.04.02 (1.52v13; deleteRows regression)
rasband Apr 3, 2020
b0e2609
2020.04.07 (1.52v18; Java compiler errors)
rasband Apr 7, 2020
1530e68
2020.04.08 (1.52v19; Changing LUT resets range)
rasband Apr 8, 2020
c23cb36
2020.04.10 (1.52v23; Custom plot symbols)
rasband Apr 10, 2020
08d498f
2020.04.13 (1.52v; Release version)
rasband Apr 13, 2020
9421bc9
2020.04.14 (1.53a; Plot.setIntevals)
rasband Apr 14, 2020
4ab280d
2020.04.17 (1.53a3; Image properties)
rasband Apr 17, 2020
8d2a069
2020.04.22 (1.53a11; Help>Examples>Plots>Plot Results)
rasband Apr 22, 2020
9456cd2
2020.04.24 (1.53a14; Help>Examples>JavaScript>FFT Filter)
rasband Apr 24, 2020
d98ade6
2020.04.24 (1.53a15; GenericDialog.getParentFrame)
rasband Apr 25, 2020
7ef1684
2020.04.25 (1.53a16; Persistent image properties)
rasband Apr 25, 2020
44a2931
2020.04.27 (1.53a18; Property.set macro function)
rasband Apr 27, 2020
a9de345
2020.04.27 (1.53a19; FileSaver buffer size)
rasband Apr 27, 2020
fb142c3
2020.04.28 (1.53a21; Image properties and .tif.zip files)
rasband Apr 28, 2020
7d2f534
2020.05.01 (1.53a22; Property.* macro functions)
rasband May 1, 2020
b3dc096
2020.05.04 (1.53a25; Threshold tool freeze)
rasband May 4, 2020
a775ebc
2020.05.04 (1.53a; Release version)
rasband May 4, 2020
bf49fa5
2020.05.08 (1.53b3; Cell Counter tables)
rasband May 8, 2020
e383917
2020.05.09 (1.53b6; Label Maker tool)
rasband May 9, 2020
db83ecb
2020.05.12 (1.53b11; Edit>Options>Roi Defaults)
rasband May 12, 2020
9e00496
2020.05.12 (1.53b12; GenericDialog)
rasband May 12, 2020
2a427cd
2020.05.15 (1.53b16; Line selections and arrow keys)
rasband May 15, 2020
dd408fe
2020.05.18 (1.53b19; New macro functions)
rasband May 18, 2020
fbb954f
2020.05.19 (1.53b21; ROI group names)
rasband May 20, 2020
64f956a
2020.05.20 (1.53b26; Tool icons)
rasband May 21, 2020
fc1f024
2020.05.23 (1.53b33; Edit>Selection>Properties)
rasband May 23, 2020
fa8b524
2020.05.30 (1.53b42; Flip FITS images)
rasband May 31, 2020
dd686df
2020.05.31 (1.53b; Release version)
rasband Jun 1, 2020
b24916c
2020.06.01 (1.53c1; Easter egg)
rasband Jun 2, 2020
d8d921a
2020.06.02 (1.53c3; Duplicator bug fixes)
rasband Jun 3, 2020
8bc133e
2020.06.04 (1.53c8; Color picker tool icon)
rasband Jun 5, 2020
dfa69ef
2020.06.07 (1.53c17; Larger main window and improved tool icons)
rasband Jun 7, 2020
3d11cd9
2020.06.09 (1.53c21; Roi.activateSelection macro function)
rasband Jun 9, 2020
18c6b29
2020.06.11 (1.53c31; Windows 10 menubar and GUI scale)
rasband Jun 11, 2020
0826e9b
2020.06.13 (1.53c39; Edit>Selection>Fit Spline)
rasband Jun 13, 2020
1d4817a
2020.06.14 (1.53c41; Overlay scaling)
rasband Jun 15, 2020
957fa42
2020.06.16 (1.53c44; Activating overlay ROIs)
rasband Jun 16, 2020
ff9ed4e
2020.06.17 (1.53c47; Help>Examples>Tools>Circle Tool)
rasband Jun 17, 2020
2321fee
2020.06.19 (1.53c52; Help>Examples>Tools> menu)
rasband Jun 19, 2020
a2643f4
2020.06.20 (1.53c54; AutoInstall directive)
rasband Jun 20, 2020
c45f373
2020.06.22 (1.53c57; RoiManager.setProperty)
rasband Jun 22, 2020
c400f2b
2020.06.23 (1.53c60; LUT names)
rasband Jun 23, 2020
a291b00
2020.06.24 (1.53c62; Crop multiple ROIs)
rasband Jun 24, 2020
19962aa
2020.06.26 (1.53c; Release version)
rasband Jun 27, 2020
a8299b7
2020.06.29 (1.53d5; Java 14 compatibility)
rasband Jun 29, 2020
253e736
2020.06.30 (1.53d7; Crop multiple ROIs)
rasband Jun 30, 2020
b565308
2020.07.03 (1.53d8; Virtual stacks not in CZT order)
rasband Jul 3, 2020
9e1a485
2020.07.07 (1.53d11; GenericDialog.addDirectoryField)
rasband Jul 6, 2020
f44c8f8
2020.07.07 (1.53d14; Overlay.cropAndSave
rasband Jul 8, 2020
286949d
2020.07.08 (1.53d15; LutLoader.getLut)
rasband Jul 9, 2020
c875290
2020.07.15 (1.53d27; Color Picker)
rasband Jul 15, 2020
8c69d76
2020.07.16 (1.53d30; HyperStackConverter.toStack)
rasband Jul 16, 2020
cf62af4
2020.07.17 (1.53d31; ROI Manager MultiCrop)
rasband Jul 17, 2020
08f2d84
2020.07.19 (1.53d34; Fit.doFit)
rasband Jul 20, 2020
1e601bc
2020.07.22 (1.53d36; Top Hat filter)
rasband Jul 23, 2020
6cb8dcb
2020.07.25 (1.53d45; Bug fixes)
rasband Jul 25, 2020
3236188
2020.07.28 (1.53d47; GenericDialog drag and drop)
rasband Jul 28, 2020
b5962f6
2020.08.01 (1.53d52; Analyzer.measure)
rasband Aug 1, 2020
573ab79
2020.08.05 (1.53d54; Sample image URLs)
rasband Aug 5, 2020
c769091
2020.08.06 (1.53d56; Recording on Windows)
rasband Aug 7, 2020
7f927af
2020.08.07 (1.53d59; MacAdapter class)
rasband Aug 7, 2020
fd05740
2020.08.07 (1.53d60; Help>About ImageJ)
rasband Aug 7, 2020
bca87db
2020.08.13 (1.53d66; replace macro function)
rasband Aug 14, 2020
03c7ee5
2020.08.14 (1.53d67; Plot Profile regression)
rasband Aug 15, 2020
9cc02ec
2020.08.15 (1.53d68; Edit>Selection>Scale)
rasband Aug 15, 2020
154d597
2020.08.17 (1.53d72; GetResult regression)
rasband Aug 17, 2020
45249e6
2020.08.18 (1.53d74; Stack to Images regression)
rasband Aug 18, 2020
e37376e
2020.08.20 (1.53d; Release version)
rasband Aug 20, 2020
85e6b2d
2020.08.22 (1.53e2; Table.get)
rasband Aug 22, 2020
ffa061f
2020.08.23 (1.53e4; Add to Manager recording)
rasband Aug 23, 2020
6037ff7
2020.08.30 (1.53e8; Added module-info.java)
rasband Aug 30, 2020
3c3e5ee
2020.08.31 (1.53e10; Copy to System)
rasband Aug 31, 2020
d6c5614
2020.09.05 (1.53e15; Color picker tool)
rasband Sep 5, 2020
e509cbf
2020.09.08 (1.53e17; getDirectory regression)
rasband Sep 8, 2020
696e811
2020.09.12 (1.53e21; Import>Image Sequence)
rasband Sep 12, 2020
41330fa
2020.09.16 (1.53e; Release version)
rasband Sep 17, 2020
b06c4f6
2020.09.18 (1.53f2; Folder drag and drop)
rasband Sep 18, 2020
cf3ba8f
2020.09.18 (1.53f5; Paste at x,y)
rasband Sep 18, 2020
5c6d81f
2020.09.21 (1.53f11; Edit>Options>Fresh Start)
rasband Sep 21, 2020
4e0bbbf
2020.09.24 (1.53f13; ROI Properties editable text )
rasband Sep 25, 2020
bdafa40
2020.09.26 (1.53f20; ResultsTable regression)
rasband Sep 27, 2020
5441a8f
2020.10.01 (1.53f24; Undo of overlays)
rasband Oct 2, 2020
4129580
2020.10.06 (1.53f26; Analyze>Histogram)
rasband Oct 6, 2020
6019950
2020.10.11 (1.53f32; Image>Stacks>Reslice)
rasband Oct 11, 2020
c70a30b
2020.10.12 (1.53f40; Opener error messages)
rasband Oct 13, 2020
3641390
2020.10.14 (1.53f41; Support for ImageJ.JS)
rasband Oct 15, 2020
aade3c1
2020.10.15 (1.53f43; Long press popup menus)
rasband Oct 15, 2020
0800c0d
2020.10.17 (1.53f46; ROI popup menu)
rasband Oct 18, 2020
9ba8ce4
2020.10.19 (1.53f47; toolbar Dev menu)
rasband Oct 20, 2020
b62b15c
2020.10.22 (1.53f50; Preferences)
rasband Oct 23, 2020
de42da0
2020.10.26 (1.53f; Release version)
rasband Oct 26, 2020
024b3c1
2020.10.27 (1.53g3; Window menu)
rasband Oct 27, 2020
2c42f43
2020.10.30 (1.53g5; Scaler.rescale)
rasband Oct 30, 2020
5f8c9ac
2020.10.30 (1.53g6; SubstackMaker)
rasband Oct 31, 2020
216e0ba
2020.11.06 (1.53g11; Duplicate Image command)
rasband Nov 6, 2020
7445d83
2020.11.07 (1.53g13; Editor Run button)
rasband Nov 8, 2020
3eb760c
2020.11.10 (1.53g17; HistogramPlot class)
rasband Nov 11, 2020
315c72d
2020.11.12 (1.53g20; GenericDialog enums)
rasband Nov 12, 2020
98ef783
2020.11.13 (1.53g24; Expandable macro arrays)
rasband Nov 14, 2020
5ace4ff
2020.11.14 (1.53g25; GenericDialog.getFont)
rasband Nov 14, 2020
c456171
2020.11.14 (1.53g26; Python recording)
rasband Nov 15, 2020
d6ba602
2020.11.16 (1.53g34; Particle analyzer composite ROIs)
rasband Nov 17, 2020
b16484e
2020.11.19 (1.53g37; Particle analyzer)
rasband Nov 19, 2020
22c63c0
2020.11.21 (1.53g42; IntProcessor)
rasband Nov 21, 2020
a0d335d
2020.11.25 (1.53g49; IntProcessor)
rasband Nov 25, 2020
b1a5e22
2020.11.27 (1.53g53; Overlay Masks)
rasband Nov 27, 2020
db29498
2020.11.30 (1.53g57; Particle analyzer)
rasband Nov 30, 2020
28ba56e
2020.12.03 (1.53g61; Composite ROI group)
rasband Dec 3, 2020
ff2892a
2020.12.06 (1.53g; Release version)
rasband Dec 6, 2020
574e2c1
2020.12.08 (1.53h8; Minimized windows)
rasband Dec 16, 2020
ba4a8ee
2020.12.20 (1.53h12; Measure Overlay)
rasband Dec 21, 2020
df5a4a3
2020.12.21 (1.53h13; ImageJ.JS tools)
rasband Dec 21, 2020
e6d1b50
2020.12.25 (1.53h17; Java 8 now required)
rasband Dec 25, 2020
1a2912d
2020.12.30 (1.53h19; ImagePlus implements AutoCloseable)
rasband Dec 30, 2020
46286b7
2021.01.01 (1.53h20; Overlay.xor
rasband Jan 1, 2021
dd51b56
2021.01.05 (1.53h25; Java 8 no longer required
rasband Jan 5, 2021
6a0f7d7
2021.01.07 (1.53h30; Image>Type>HSB Stack)
rasband Jan 8, 2021
cf8a4c5
2021.01.10 (1.53h37; Roi.getBounds)
rasband Jan 10, 2021
4887d7c
2021.01.11 (1.53h38; ResultsTable)
rasband Jan 12, 2021
1cb3cc0
2021.01.13 (1.53h40; Color.* macro functions)
rasband Jan 14, 2021
fa8bee7
2021.01.15 (1.53h45; Color.* macro functions)
rasband Jan 15, 2021
2bf338a
2021.01.16 (1.53h47; Toolbar.setIcon)
rasband Jan 16, 2021
f4902e5
2021.01.24 (1.53h53; Selection brush tool)
rasband Jan 24, 2021
c88089f
2021.01.24 (1.53h54; Calibration bars)
rasband Jan 25, 2021
e0e4fc8
2021.01.27 (1.53h55; Headless mode regression)
rasband Jan 27, 2021
d4be2c5
2021.02.04 (1.53h; Release version)
rasband Feb 5, 2021
ffeb307
2021.02.06 (1.53i2; ROI Manager Propeties)
rasband Feb 6, 2021
6c4f362
2021.02.07 (1.53i3; Flashing status messages)
rasband Feb 7, 2021
ec96364
2021.02.11 (1.53i4; One slice stacks)
rasband Feb 11, 2021
88b471e
2021.02.12 (1.53i6; Split Channels)
rasband Feb 12, 2021
3fe0cb7
2021.02.13 (1.53i8; Flatten multi-point)
rasband Feb 13, 2021
81d0e0e
2021.02.18 (1.53i14; Line numbers in status bar)
rasband Feb 18, 2021
97c406a
2021.02.20 (1.53i18; Apply LUTs in Command finder)
rasband Feb 20, 2021
0f79d4b
2021.02.23 (1.53i21; String functions)
rasband Feb 23, 2021
c1342bf
2021.02.25 (1.53i23; ROI Manager)
rasband Feb 25, 2021
8c753f6
2021.03.01 (1.53i25; ContrastEnhancer)
rasband Mar 2, 2021
5304d04
2021.03.12 (1.53i29; String functions)
rasband Mar 13, 2021
32aeb17
2021.03.20 (1.53i33; Plugins>Utilities>Benchmark)
rasband Mar 21, 2021
e793e77
2021.03.24 (1.53i44; str.trim regression)
rasband Mar 24, 2021
c404e1a
2021.03.24 (1.53i; Release version)
rasband Mar 26, 2021
8d618a4
2021.03.30 (1.53j2; Color.setForegroundValue)
rasband Mar 30, 2021
96856ec
2021.03.31 (1.53j4; IJ.checksum macro function)
rasband Mar 31, 2021
80de574
2021.04.02 (1.53j5; DicomDecoder)
rasband Apr 2, 2021
916450c
2021.04.04 (1.53j7; Zoom class)
rasband Apr 5, 2021
84e9e3b
2021.04.07 (1.53j12; Zoom class)
rasband Apr 7, 2021
8e97620
2021.04.13 (1.53j18; Image>Transform>Rotate)
rasband Apr 13, 2021
b553ff4
2021.04.27 (1.53j26; Bug fixes)
rasband Apr 27, 2021
d6d069f
2021.04.28 (1.53j29; Batch mode composite images)
rasband Apr 28, 2021
2f2a9ad
2021.04.30 (1.53j31; CurveFitter weights)
rasband Apr 30, 2021
930adb2
2021.05.05 (1.53j35; Overlay>List Elements)
rasband May 5, 2021
f8d7d3d
2021.05.10 (1.53j43; Plugins>Utilities>Benchmark)
rasband May 10, 2021
f5c04a5
2021.05.13 (1.53; Release version)
rasband Jun 4, 2021
7b5e3f6
2021.06.04 (1.53k2; NaNs in tables)
rasband Jun 4, 2021
ac470b6
2021.06.08 (1.53k6; Particle analyzer)
rasband Jun 8, 2021
48ed159
2021.06.16 (1.53k9; Set Slice)
rasband Jun 17, 2021
7e8844a
2021.06.22 (1.53k11; Hyperstack display)
rasband Jun 22, 2021
a6562a6
2021.06.26 (1.53k14; MacAdapter9)
rasband Jun 26, 2021
da13b15
2021.07.03 (1.53k16; Modern mode and Invert)
rasband Jul 4, 2021
715f940
2021.07.06 (1.53k19; GenericDialog.addButton)
rasband Jul 6, 2021
71be705
2021.07.06 (1.53k19; build.xml)
rasband Jul 6, 2021
7203ebd
2021.07.06 (1.53k; Release version)
rasband Jul 7, 2021
da250c5
2021.07.16 (1.53m3; Bug fixes)
rasband Jul 17, 2021
38146fe
2021.07.20 (1.53m4; ROI Manager Open and Save)
rasband Jul 20, 2021
5661eea
2021.07.21 (1.53m5; JFileChooser drag and drop)
rasband Jul 21, 2021
099386f
2021.07.26 (1.53m7; Fit Rectangle)
rasband Jul 27, 2021
f429d91
2021.07.28 (1.53m8; bug fixes)
rasband Jul 29, 2021
0b570ef
2021.08.08 (1.53m11; findMinAndMax)
rasband Aug 8, 2021
3fffc40
2021.08.08 (1.53m12; findMinAndMax)
rasband Aug 8, 2021
1b23245
2021.08.17 (1.53m15; FITS Reader)
rasband Aug 18, 2021
93fb4b9
2021.09.05 (1.53m20; GitHub compile error)
rasband Sep 5, 2021
609d1f3
2021.09.17 (1.53m27; Vertical scale bars)
rasband Sep 17, 2021
a75c8fa
2021.09.22 (1.53m33; Vertical scale bars)
rasband Sep 22, 2021
faaa7e0
2021.09.26 (1.53m36; Import>Image Sequence)
rasband Sep 24, 2021
49757a4
2021.09.27 (1.53m40; Type>RGB Stack)
rasband Sep 27, 2021
cf4eb76
2021.09.28 (1.53m; Release Version)
rasband Sep 28, 2021
d0df5f3
2021.10.04 (1.53n3; Stack to Hyperstack)
rasband Oct 5, 2021
5945fcf
2021.10.07 (1.53n7; Colors class)
rasband Oct 8, 2021
c8a1fd4
2021.10.21 (1.53n12; Bug fixes)
rasband Oct 22, 2021
1a86819
2021.10.26 (1.53n14; Stack opening regression)
rasband Oct 26, 2021
3271fe7
2021.10.27 (1.53n17; DICOM fixed scaling)
rasband Oct 28, 2021
a0e6333
2021.11.04 (1.53n25; Process>Math>Macro regression)
rasband Nov 5, 2021
febe08c
2021.11.08 (1.53n; Release version)
rasband Nov 8, 2021
6b223e4
2021.11.10 (1.53o2; RoiScaler regression)
rasband Nov 10, 2021
de70414
2021.11.13 (1.53o6; Make Binary)
rasband Nov 13, 2021
834d41b
2021.11.18 (1.53o15; Look and feel)
rasband Nov 18, 2021
9b9ed8e
2021.11.23 (1.53o19; IJ.open and Bio-Formats)
rasband Nov 23, 2021
590a671
2021.11.26 (1.53o27; Scientific notation)
rasband Nov 27, 2021
9a15154
2021.12.05 (1.53o31; Exception handling)
rasband Dec 5, 2021
c9e6a6a
2021.12.22 (1.53o45; Table and ROI Manager actions)
rasband Dec 22, 2021
87552b7
2021.12.26 (1.53o51; Composite min projection)
rasband Dec 27, 2021
4d4ace2
2021.12.27 (1.53o53; Composite image projection)
rasband Dec 28, 2021
4482aa6
2021.12.27 (1.53o57; Composite image projection)
rasband Dec 29, 2021
6229b7d
2022.01.02 (1.53o60; Composite Invert)
rasband Jan 2, 2022
a9031a5
2022.01.08 (1.53o65; Loading preferences)
rasband Jan 8, 2022
a5ed623
2022.01.10 (1.53o69; Edit>Selection>Specify)
rasband Jan 11, 2022
c38a87b
2022.01.11 (1.53o; Release version)
rasband Jan 11, 2022
0f7bd84
take out ij folder
oeway Feb 15, 2022
ec4a3c2
Merge tag 'v1.53o' of https://github.com/imagej/ImageJ into move-dir
oeway Feb 15, 2022
1aff0fd
Fix patches for imagej.js
oeway Feb 15, 2022
fa078ef
Add resources
oeway Feb 15, 2022
008362b
Skip release before merge
oeway May 15, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 2 additions & 1 deletion .github/workflows/build-imagej.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,10 @@ jobs:
- name: Compile ImageJ.JS
run: bash compile-js.sh
- uses: meeDamian/[email protected]
if: github.ref == 'refs/heads/master'
with:
token: ${{ secrets.GITHUB_TOKEN }}
tag: 1.53m
tag: 1.53o
name: ImageJ.JS
files: imagej-js-dist/
allow_override: true
File renamed without changes.
2 changes: 1 addition & 1 deletion compile-js-dev.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

set -e

IJ_JAR="ij-1.53m.jar"
IJ_JAR="ij-1.53o.jar"
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

mvn clean
Expand Down
2 changes: 1 addition & 1 deletion compile-js.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ cd imagej-js-dist

# download ij153 from imagej.net
export IJ1_VERSION=ij153
export IJ_JAR=ij-1.53m.jar
export IJ_JAR=ij-1.53o.jar

curl http://wsr.imagej.net/distros/cross-platform/${IJ1_VERSION}.zip -LO
unzip -q -o ${IJ1_VERSION}.zip
Expand Down
File renamed without changes.
119 changes: 109 additions & 10 deletions src/main/java/ij/CompositeImage.java → ij/CompositeImage.java
Original file line number Diff line number Diff line change
Expand Up @@ -277,12 +277,25 @@ public synchronized void updateImage() {
rgbImage = null;
}
cip[currentChannel].setMinAndMax(ip.getMin(),ip.getMax());
int projectionMode = ImageProcessor.SUM_PROJECTION;
String prop = getProp("CompositeProjection");
if (prop!=null) {
if (prop.contains("Max")||prop.contains("max"))
projectionMode = ImageProcessor.MAX_PROJECTION;
if (prop.contains("Min")||prop.contains("min"))
projectionMode = ImageProcessor.MIN_PROJECTION;
if (prop.contains("Invert")||prop.contains("invert"))
projectionMode = ImageProcessor.INVERT_PROJECTION;
}
long t0 = IJ.debugMode?System.currentTimeMillis():0L;
if (singleChannel && nChannels<=3) {
switch (currentChannel) {
case 0: cip[0].updateComposite(rgbPixels, 1); break;
case 1: cip[1].updateComposite(rgbPixels, 2); break;
case 2: cip[2].updateComposite(rgbPixels, 3); break;
case 0: cip[0].updateComposite(rgbPixels, ImageProcessor.UPDATE_RED); break;
case 1: cip[1].updateComposite(rgbPixels, ImageProcessor.UPDATE_GREEN); break;
case 2: cip[2].updateComposite(rgbPixels, ImageProcessor.UPDATE_BLUE); break;
}
} else if (projectionMode==ImageProcessor.INVERT_PROJECTION){
makeInvertedComposite(active);
} else {
if (cip==null) return;
if (syncChannels) {
Expand All @@ -296,20 +309,104 @@ public synchronized void updateImage() {
syncChannels = false;
}
if (active[0])
cip[0].updateComposite(rgbPixels, 4);
else
{for (int i=1; i<imageSize; i++) rgbPixels[i] = 0;}
cip[0].updateComposite(rgbPixels, ImageProcessor.SET_FIRST_CHANNEL);
else {
int fill = projectionMode==ImageProcessor.MIN_PROJECTION?0xffffff:0;
for (int i=1; i<imageSize; i++)
rgbPixels[i] = fill;
}
if (cip==null || nChannels>cip.length)
return;
for (int i=1; i<nChannels; i++)
if (active[i]) cip[i].updateComposite(rgbPixels, 5);
if (active[i]) cip[i].updateComposite(rgbPixels, projectionMode);
}
if (IJ.debugMode) IJ.log(""+(System.currentTimeMillis()-t0));
createBufferedImage();
if (img==null && awtImage!=null)
img = awtImage;
singleChannel = false;
}
}

// Creates multi-channel composite view with inverted LUTs
// https://forum.image.sc/t/multi-channel-composite-view-with-inverted-luts-in-imagej-fiji/61163
// Peter Haub, 12'2021
private void makeInvertedComposite(boolean[] chnActive) {
int bitDepth = getBitDepth();
int w = getWidth();
int h = getHeight();
int nChn = getNChannels();

int nChnActive = 0;
for (int c=0; c<nChn; c++){
if (chnActive[c])
nChnActive++;
}

byte[][] in8 = null;
short[][] in16 = null;
float[][] in32 = null;
switch (bitDepth) {
case 8: in8=new byte[nChn][]; break;
case 16: in16=new short[nChn][]; break;
case 32: in32=new float[nChn][]; break;
}
double[] mins = new double[nChn];
double[] maxs = new double[nChn];
double[] scale = new double[nChn];
LUT[] luts = getLuts();

for (int c=0; c<nChn; c++){
mins[c] = cip[c].getMin();
maxs[c] = cip[c].getMax();
scale[c] = (255.0 / (maxs[c] - mins[c]));
switch (bitDepth) {
case 8: in8[c] = (byte[]) cip[c].getPixels(); break;
case 16: in16[c] = (short[]) cip[c].getPixels(); break;
case 32: in32[c] = (float[]) cip[c].getPixels(); break;
}
}

int value;
int[] v = new int[nChn];
int[] r = new int[nChn]; int[] g = new int[nChn]; int[] b = new int[nChn];
int sumR, sumG, sumB;
int newR, newG, newB;

for (int idx=0; idx<w*h; idx++) {
for (int c=0; c<nChn; c++){
switch (bitDepth) {
case 8: v[c] = (int)Math.floor(((in8[c][idx]&0xff)-mins[c])*scale[c]); break;
case 16: v[c] = (int)Math.floor(((in16[c][idx]&0xffff)-mins[c])*scale[c]); break;
case 32: v[c] = (int)Math.floor((in32[c][idx]-mins[c])*scale[c]); break;
}
v[c] = Math.min(v[c], 255);
v[c] = Math.max(v[c], 0);
r[c] = luts[c].getRed(v[c]);
g[c] = luts[c].getGreen(v[c]);
b[c] = luts[c].getBlue(v[c]);
}

// Modify 'composite merge' condition here
sumR = sumG = sumB = 0;
for (int c=0; c<nChn; c++){
if (chnActive[c]){
sumR += r[c];
sumG += g[c];
sumB += b[c];
}
}
newR = sumR - (nChnActive-1)*255;
newG = sumG - (nChnActive-1)*255;
newB = sumB - (nChnActive-1)*255;

newR = Math.max(newR, 0);
newG = Math.max(newG, 0);
newB = Math.max(newB, 0);
value = newR*256*256 + newG*256 + newB;
rgbPixels[idx] = value;
}
}

void createImage() {
if (imageSource==null) {
rgbCM = new DirectColorModel(32, 0xff0000, 0xff00, 0xff);
Expand Down Expand Up @@ -412,8 +509,10 @@ public synchronized void setMode(int mode) {
return;
if (mode==COMPOSITE && getNChannels()>MAX_CHANNELS)
mode = COLOR;
for (int i=0; i<MAX_CHANNELS; i++)
active[i] = true;
if (!(mode==COMPOSITE && mode==this.mode)) {
for (int i=0; i<MAX_CHANNELS; i++)
active[i] = true;
}
if (this.mode!=COMPOSITE && mode==COMPOSITE)
img = null;
this.mode = mode;
Expand Down
File renamed without changes.
31 changes: 21 additions & 10 deletions src/main/java/ij/IJ.java → ij/IJ.java
Original file line number Diff line number Diff line change
Expand Up @@ -1520,8 +1520,17 @@ public static void setThreshold(ImagePlus img, double lowerThreshold, double upp
setRawThreshold(img, lowerThreshold, upperThreshold, displayMode);
}

/** This is a version of setThreshold() that uses raw (uncalibrated)
* values in the range 0-255 for 8-bit images and 0-65535 for 16-bit
* images and the "Red" LUT display mode.
*/
public static void setRawThreshold(ImagePlus img, double lowerThreshold, double upperThreshold) {
setRawThreshold(img, lowerThreshold, upperThreshold, null);
}

/** This is a version of setThreshold() that always uses raw (uncalibrated) values
in the range 0-255 for 8-bit images and 0-65535 for 16-bit images. */
* in the range 0-255 for 8-bit images and 0-65535 for 16-bit images.
*/
public static void setRawThreshold(ImagePlus img, double lowerThreshold, double upperThreshold, String displayMode) {
int mode = ImageProcessor.RED_LUT;
if (displayMode!=null) {
Expand Down Expand Up @@ -1895,8 +1904,9 @@ else if (build.length()==1)
"home" ("user.home"), "downloads", "startup", "imagej" (ImageJ directory),
"plugins", "macros", "luts", "temp", "current", "default",
"image" (directory active image was loaded from), "file"
(directory most recently used to open or save a file) or "cwd"
(current working directory), otherwise displays a dialog and
(directory most recently used to open or save a file), "cwd"
(current working directory) or "preferences" (location of
"IJ_Prefs.txt" file), otherwise displays a dialog and
returns the path to the directory selected by the user. Returns
null if the specified directory is not found or the user cancels the
dialog box. Also aborts the macro if the user cancels the
Expand Down Expand Up @@ -1924,6 +1934,8 @@ else if (title2.equals("imagej"))
dir = Prefs.getImageJDir();
else if (title2.equals("current") || title2.equals("default"))
dir = OpenDialog.getDefaultDirectory();
else if (title2.equals("preferences"))
dir = Prefs.getPrefsDir();
else if (title2.equals("temp")) {
dir = System.getProperty("java.io.tmpdir");
if (isMacintosh()) dir = "/tmp/";
Expand Down Expand Up @@ -2151,7 +2163,7 @@ public static void saveAs(String format, String path) {
public static byte[] saveAsBytes(ImagePlus imp, String format) {
String tmp = "/files/tmp";
String title = imp.getTitle();
tmp = saveAs(imp, format, tmp);
saveAs(imp, format, tmp);
// recover the title
imp.setTitle(title);
byte[] bytes = openAsBytes(tmp);
Expand Down Expand Up @@ -2192,9 +2204,9 @@ public static PlugInFrame createPlugInFrame(String title, int x, int y, int widt
/* Saves the specified image. The format argument must be "tiff",
"jpeg", "gif", "zip", "raw", "avi", "bmp", "fits", "pgm", "png",
"text image", "lut", "selection" or "xy Coordinates". */
public static String saveAs(ImagePlus imp, String format, String path) {
public static void saveAs(ImagePlus imp, String format, String path) {
if (format==null)
return null;
return;
if (path!=null && path.length()==0)
path = null;
format = format.toLowerCase(Locale.US);
Expand All @@ -2203,15 +2215,15 @@ public static String saveAs(ImagePlus imp, String format, String path) {
roi2.endPaste();
if (format.indexOf("tif")!=-1) {
saveAsTiff(imp, path);
return path;
return;
} else if (format.indexOf("jpeg")!=-1 || format.indexOf("jpg")!=-1) {
path = updateExtension(path, ".jpg");
JpegWriter.save(imp, path, FileSaver.getJpegQuality());
return path;
return;
} else if (format.indexOf("gif")!=-1) {
path = updateExtension(path, ".gif");
GifWriter.save(imp, path);
return path;
return;
} else if (format.indexOf("text image")!=-1) {
path = updateExtension(path, ".txt");
format = "Text Image...";
Expand Down Expand Up @@ -2261,7 +2273,6 @@ public static String saveAs(ImagePlus imp, String format, String path) {
else
run(imp, format, "save="+path);
}
return path;
}

/** Saves the specified image in TIFF format. Displays a file save dialog
Expand Down
File renamed without changes.
17 changes: 12 additions & 5 deletions src/main/java/ij/ImageJ.java → ij/ImageJ.java
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,8 @@ public class ImageJ extends Frame implements ActionListener,
MouseListener, KeyListener, WindowListener, ItemListener, Runnable {

/** Plugins should call IJ.getVersion() or IJ.getFullVersion() to get the version string. */
public static final String VERSION = "1.53m";
public static final String BUILD = ""; //41
public static final String VERSION = "1.53o";
public static final String BUILD = ""; //70
public static Color backgroundColor = new Color(237,237,237);
/** SansSerif, 12-point, plain font. */
public static final Font SansSerif12 = new Font("SansSerif", Font.PLAIN, 12);
Expand All @@ -96,6 +96,9 @@ public class ImageJ extends Frame implements ActionListener,
/** Run embedded and invisible in another application. */
public static final int NO_SHOW = 2;

/** Run as the ImageJ application. */
public static final int IMAGEJ_APP = 3;

/** Run ImageJ in debug mode. */
public static final int DEBUG = 256;

Expand Down Expand Up @@ -145,6 +148,10 @@ public ImageJ(java.applet.Applet applet, int mode) {
if ((mode&DEBUG)!=0)
IJ.setDebugMode(true);
mode = mode & 255;
boolean useExceptionHandler = false;
if (mode==IMAGEJ_APP) {
mode = STANDALONE;
}
if (IJ.debugMode) IJ.log("ImageJ starting in debug mode: "+mode);
embedded = applet==null && (mode==EMBEDDED||mode==NO_SHOW);
this.applet = applet;
Expand Down Expand Up @@ -226,7 +233,7 @@ public ImageJ(java.applet.Applet applet, int mode) {
}
if (applet==null)
IJ.runPlugIn("ij.plugin.DragAndDrop", "");
if (!getTitle().contains("Fiji")) {
if (!getTitle().contains("Fiji") && useExceptionHandler) {
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler());
System.setProperty("sun.awt.exception.handler",ExceptionHandler.class.getName());
}
Expand Down Expand Up @@ -712,7 +719,7 @@ public void savePreferences(Properties prefs) {

public static void main(String args[]) {
boolean noGUI = false;
int mode = STANDALONE;
int mode = IMAGEJ_APP;
arguments = args;
int nArgs = args!=null?args.length:0;
boolean commandLine = false;
Expand Down Expand Up @@ -741,7 +748,7 @@ else if (delta>0 && DEFAULT_PORT+delta<65536)
}
}
// If existing ImageJ instance, pass arguments to it and quit.
boolean passArgs = mode==STANDALONE && !noGUI;
boolean passArgs = (mode==IMAGEJ_APP||mode==STANDALONE) && !noGUI;
if (IJ.isMacOSX() && !commandLine)
passArgs = false;
if (passArgs && isRunning(args))
Expand Down
File renamed without changes.
File renamed without changes.
Loading