Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
86 lines (73 sloc) 2.11 KB
from ij import IJ, WindowManager
from ij.plugin.frame import Editor
import jarray
from java.awt import Font, Menu, MenuItem
from java.awt.event import ActionListener
from java.awt.image import IndexColorModel
# Call this script to show the current Lookup Table in an editor.
# The user can edit it, and call Lookup Table>Set Lookup Table after editing
# the numbers.
def editLUTAsText():
image = WindowManager.getCurrentImage()
if image == None:
IJ.error('Need an image')
return
ip = image.getProcessor()
cm = ip.getCurrentColorModel()
if not hasattr(cm, 'getMapSize'):
IJ.error('Need an 8-bit color image')
return
size = cm.getMapSize()
if size > 256:
IJ.error('Need an 8-bit color image')
return
reds = jarray.zeros(size, 'b')
greens = jarray.zeros(size, 'b')
blues = jarray.zeros(size, 'b')
cm.getReds(reds)
cm.getGreens(greens)
cm.getBlues(blues)
def color(array, index):
value = array[index]
if value < 0:
value += 256
return '% 4d' % value
text = ''
for i in range(0, size):
text = text + color(reds, i) + ' ' + color(greens, i) + ' ' \
+ color(blues, i) + "\n"
editor = Editor(25, 80, 12, Editor.MONOSPACED | Editor.MENU_BAR)
editor.create('Lookup Table', text)
def string2byte(string):
value = int(string)
if value > 127:
value -= 256
if value < -128:
value = 128
return value
class SetLookupTable(ActionListener):
def actionPerformed(self, event):
text = editor.getText()
i = 0
for line in text.split("\n"):
colors = line.split()
if len(colors) < 3:
continue
reds[i] = string2byte(colors[0])
greens[i] = string2byte(colors[1])
blues[i] = string2byte(colors[2])
i += 1
cm = IndexColorModel(8, 256, reds, greens, blues)
ip.setColorModel(cm)
image.updateAndRepaintWindow()
menuItem = MenuItem('Set Lookup Table')
menuItem.addActionListener(SetLookupTable())
menu = Menu('Lookup Table')
menu.add(menuItem)
menuBar = editor.getMenuBar()
for i in range(menuBar.getMenuCount() - 1, -1, -1):
label = menuBar.getMenu(i).getLabel()
if label == 'Macros' or label == 'Debug':
menuBar.remove(i)
menuBar.add(menu)
editLUTAsText()
You can’t perform that action at this time.