academic/ImageJ: Added (Image processing and analysis in Java)
Signed-off-by: dsomero <xgizzmo@slackbuilds.org>
This commit is contained in:
parent
b06f8ace51
commit
64ae6500e3
|
@ -0,0 +1,85 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Slackware build script for ImageJ
|
||||
|
||||
# Copyright 2012 Petar Petrov, ppetrov@paju.oulu.fi
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use of this script, with or without modification, is
|
||||
# permitted provided that the following conditions are met:
|
||||
#
|
||||
# 1. Redistributions of this script must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
PRGNAM=ImageJ
|
||||
VERSION=${VERSION:-1.45}
|
||||
ARCH=noarch
|
||||
BUILD=${BUILD:-1}
|
||||
TAG=${TAG:-_SBo}
|
||||
|
||||
SRCNAM=ij
|
||||
SRCVER=145
|
||||
|
||||
CWD=$(pwd)
|
||||
TMP=${TMP:-/tmp/SBo}
|
||||
PKG=$TMP/package-$PRGNAM
|
||||
OUTPUT=${OUTPUT:-/tmp}
|
||||
|
||||
set -e
|
||||
|
||||
rm -rf $PKG
|
||||
mkdir -p $TMP $PKG $OUTPUT
|
||||
cd $TMP
|
||||
rm -rf $PRGNAM
|
||||
unzip $CWD/${SRCNAM}${SRCVER}.zip
|
||||
cd $PRGNAM
|
||||
unzip $CWD/ucsd-plugins.zip
|
||||
chown -R root:root .
|
||||
find . \
|
||||
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
|
||||
-exec chmod 755 {} \; -o \
|
||||
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
|
||||
-exec chmod 644 {} \;
|
||||
|
||||
mkdir -p $PKG/usr/share/$PRGNAM
|
||||
cp -a luts macros plugins ij.jar $PKG/usr/share/$PRGNAM
|
||||
|
||||
# Install bio-formats plugins
|
||||
mkdir -p $PKG/usr/share/$PRGNAM/plugins/LOCI
|
||||
cp -a $CWD/loci_tools.jar $PKG/usr/share/$PRGNAM/plugins/LOCI
|
||||
|
||||
# Install UCSD confocal microscopy plugins
|
||||
cp -a UCSD\ Plugins $PKG/usr/share/$PRGNAM/plugins/
|
||||
|
||||
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
|
||||
cp -a README.html $PKG/usr/doc/$PRGNAM-$VERSION
|
||||
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
|
||||
|
||||
# Fix permissions
|
||||
find $PKG -type d -exec chmod 755 {} \; -o \
|
||||
-type f -exec chmod 644 {} \;
|
||||
|
||||
# Install wrapper of ij.jar
|
||||
install -D -m755 $CWD/imagej $PKG/usr/bin/imagej
|
||||
|
||||
mkdir -p $PKG/usr/share/{applications,pixmaps}
|
||||
cp $CWD/imagej.desktop $PKG/usr/share/applications
|
||||
cp $CWD/imagej.png $PKG/usr/share/pixmaps
|
||||
|
||||
mkdir -p $PKG/install
|
||||
cat $CWD/slack-desc > $PKG/install/slack-desc
|
||||
cat $CWD/doinst.sh > $PKG/install/doinst.sh
|
||||
|
||||
cd $PKG
|
||||
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
|
|
@ -0,0 +1,14 @@
|
|||
PRGNAM="ImageJ"
|
||||
VERSION="1.45"
|
||||
HOMEPAGE="http://rsb.info.nih.gov/ij/"
|
||||
DOWNLOAD="http://rsb.info.nih.gov/ij/download/zips/ij145.zip \
|
||||
http://www.loci.wisc.edu/files/software/loci_tools.jar \
|
||||
http://rsbweb.nih.gov/ij/plugins/download/ucsd-plugins.zip"
|
||||
MD5SUM="c0e0202c4a358e886ce1582dd2c9b830 \
|
||||
2914600d36ce0c077526a0380b59f099 \
|
||||
277dec926cc27ade8ef01b8ae4bb69cb"
|
||||
DOWNLOAD_x86_64=""
|
||||
MD5SUM_x86_64=""
|
||||
MAINTAINER="Petar Petrov"
|
||||
EMAIL="ppetrov@paju.oulu.fi"
|
||||
APPROVED="dsomero"
|
|
@ -0,0 +1,34 @@
|
|||
ImageJ is a Java image processing program inspired by NIH Image for
|
||||
the Macintosh. It can display, edit, analyze, process, save and print
|
||||
8-bit, 16-bit and 32-bit images. It can read many image formats
|
||||
including TIFF, GIF, JPEG, BMP, DICOM, FITS and "raw". It supports
|
||||
"stacks", a series of images that share a single window. It is multi-
|
||||
threaded, so time-consuming operations such as image file reading can
|
||||
be performed in parallel with other operations.
|
||||
|
||||
ImageJ can calculate area and pixel value statistics of user-defined
|
||||
selections. It can measure distances and angles. It can create density
|
||||
histograms and line profile plots. It supports standard image
|
||||
processing functions such as contrast manipulation, sharpening,
|
||||
smoothing, edge detection and median filtering.
|
||||
|
||||
ImageJ does geometric transformations such as scaling, rotation and
|
||||
flips. Image can be zoomed up to 32:1 and down to 1:32. All analysis
|
||||
and processing functions are available at any magnification factor.
|
||||
The program supports any number of windows (images) simultaneously,
|
||||
limited only by available memory.
|
||||
|
||||
Spatial calibration is available to provide real world dimensional
|
||||
measurements in units such as millimeters. Density or gray scale
|
||||
calibration is also available.
|
||||
|
||||
ImageJ was designed with an open architecture that provides
|
||||
extensibility via Java plugins. User-written plugins make it possible
|
||||
to solve almost any image processing or analysis problem.
|
||||
|
||||
This includes the following additional plugins:
|
||||
1) Bio-Formats.
|
||||
2) UCSD confocal microscopy plugins.
|
||||
|
||||
For a complete list of available plugins, check the corresponding
|
||||
section at the program website.
|
|
@ -0,0 +1,3 @@
|
|||
if [ -x /usr/bin/update-desktop-database ]; then
|
||||
/usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
|
||||
fi
|
|
@ -0,0 +1,483 @@
|
|||
#!/bin/bash
|
||||
# A wrapper script to launch imagej from the UNIX command line
|
||||
# Images given as arguments will be opened, macros may also be given as arguments
|
||||
# Looks for macros in the imagej macro directory
|
||||
#
|
||||
# This program is free software, but comes with no warrenty or guarantee
|
||||
# send bug reports or feedback to jjackson at familyjackson dot net
|
||||
# Author: Jon Jackson
|
||||
# Last modified date: $Date: 2008-09-17 10:31:27 +0100 (Wed, 17 Sep 2008) $
|
||||
# $Revision: 51 $
|
||||
#
|
||||
# INSTALLATION INSTRUCTIONS
|
||||
#
|
||||
### WARNING ###########################################################
|
||||
# This file must be edited with a program that supports unix new line characters
|
||||
# - it won't run if edited in 'Notepad' !
|
||||
#######################################################################
|
||||
|
||||
# Source location: http://rsb.info.nih.gov/ij/download/linux/unix-script.txt
|
||||
# 1) Save this script in the ImageJ directory as 'imagej'
|
||||
# 2) Modify path variables according to your system
|
||||
# 3) Give the new file execute permission
|
||||
# 4) Be sure the 'imagej' wrapper is in the 'PATH'
|
||||
|
||||
### MODIFICATION ###
|
||||
# With minor modifications to use with Slackware, by Petar Petrov 2012
|
||||
# ppetrov at paju dot oulu dot fi
|
||||
####################
|
||||
|
||||
# setup environment
|
||||
set +u # don't give error for unset variables (matters for environment variables)
|
||||
shopt -s extglob # allow extended pattern matching
|
||||
|
||||
############ SITE SPECIFIC VARIABLES #########################
|
||||
# Trailing / is not required for path variables
|
||||
# IMAGEJ PATH - production installation
|
||||
ij_path='/usr/share/ImageJ'
|
||||
# Path to ImageJ development installation
|
||||
#ij_path_dev='/home/jjackson/ImageJ'
|
||||
# JAVA PATH
|
||||
# assumes executable is ${java_home}/bin/java
|
||||
# set java_home variables ='' to use JAVA_HOME environment variable
|
||||
#if [[ -d /usr/java/jdk1.5 ]] ; then
|
||||
# java_home='/usr/java/jdk1.5'
|
||||
#else
|
||||
# # Optionally specify java path for all available OS / architecture combinations
|
||||
# java_home_Linux="${ij_path}/jre"
|
||||
# java_home_Linux_x86_64="${ij_path}/jre64"
|
||||
# java_home_SunOS="${ij_path}/jre64"
|
||||
# #
|
||||
#fi
|
||||
ijadmin=''
|
||||
# DOCUMENTATION URL
|
||||
doc_url='http://rsb.info.nih.gov/ij/'
|
||||
|
||||
# TEMP FOLDER
|
||||
ij_tmp='/tmp/imagej'
|
||||
# LOG FILE
|
||||
#ij_log="${ij_tmp}/log.txt"
|
||||
# default behaviour when an ImageJ window is already open
|
||||
newwindow='true'
|
||||
#newwindow='false'
|
||||
# macro argument delimiter character
|
||||
separator=':'
|
||||
# a ' ' may work provided no arguments would contain spaces
|
||||
# use macro functions: args=getArgument(); argArray=split(args, ':');
|
||||
# to recover macro arguments
|
||||
|
||||
############ DEFAULT MEMORY SETTINGS #########################
|
||||
|
||||
declare -i default_mem=768
|
||||
declare -i min_mem=32
|
||||
declare -i max_32bit=1800 # empirical
|
||||
declare -i max_64bit=17000000000 # conservative
|
||||
|
||||
############ SITE SPECIFIC MODULES #########################
|
||||
|
||||
# JAR libraries for additional modules may be placed in ${ij_path}/lib
|
||||
# jmf.jar jai_codec.jar jai_core.jar mlibwrapper_jai.jar
|
||||
|
||||
# Native libraries may be placed in ${ij_path}/lib/$OS
|
||||
# where OS matches the output of the 'uname' command
|
||||
|
||||
############ END SITE SPECIFIC VARIABLES #########################
|
||||
|
||||
OS=$(uname)
|
||||
processor=$(uname -m) # -p doesn't work on ubuntu
|
||||
declare -i mem
|
||||
declare -i max_mem
|
||||
declare -i free_mem
|
||||
|
||||
java_home="${java_home:-$JAVA_HOME}"
|
||||
|
||||
if [[ "$OS" == 'SunOS' ]] ; then
|
||||
java_arch='-d64'
|
||||
JAVA_HOME="${java_home_SunOS:-$java_home}"
|
||||
max_mem=`vmstat | awk 'BEGIN{maxMem='$max_64bit'} NR == 3 {fmem=int($5 / 1024); if (fmem < maxMem) {print fmem} else {print maxMem}}'`
|
||||
free_mem="max_mem"
|
||||
mem=${free_mem}/2
|
||||
if (( $mem > $default_mem || $mem < $min_mem )) ; then mem=$default_mem ; fi
|
||||
elif [[ "$OS" == 'Linux' ]] ; then
|
||||
if [[ "$processor" == 'x86_64' ]] ; then
|
||||
java_arch='-d64'
|
||||
JAVA_HOME="${java_home_Linux_x86_64:-$java_home}"
|
||||
max_mem=`free | awk -v maxMem=$max_64bit 'NR == 2 {fmem=int($2 / 1024); if (fmem < maxMem) {print fmem} else {print maxMem}}'`
|
||||
free_mem=`free | awk -v maxMem=$max_64bit 'NR == 3 {fmem=int($4 / 1024); if (fmem < maxMem) {print fmem} else {print maxMem}}'`
|
||||
mem=${free_mem}/3*2
|
||||
if (( $mem > $default_mem || $mem < $min_mem )) ; then mem=$default_mem ; fi
|
||||
else
|
||||
java_arch='-d32'
|
||||
JAVA_HOME="${java_home_Linux:-$java_home}"
|
||||
max_mem=`free | awk -v maxMem=$max_32bit 'NR == 2 {fmem=int($2 / 1024); if (fmem < maxMem) {print fmem} else {print maxMem}}'`
|
||||
free_mem=`free | awk -v maxMem=$max_32bit 'NR == 3 {fmem=int($4 / 1024); if (fmem < maxMem) {print fmem} else {print maxMem}}'`
|
||||
mem=${free_mem}/3*2
|
||||
if (( $mem > $default_mem || $mem < $min_mem )) ; then mem=$default_mem ; fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
# if tools.jar is not in ${ij_path}/jre/lib/ext/ edit the 'tools=' line
|
||||
# to point to tools.jar. The -compile switch will load tools.jar into the
|
||||
# classpath and enable plugins to be compiled in imagej
|
||||
|
||||
if [[ -f "${ij_path}/tools.jar" ]] ; then
|
||||
tools="${ij_path}/tools.jar"
|
||||
else
|
||||
tools=''
|
||||
fi
|
||||
|
||||
# End Site specific variables ---------------------------------------------------------
|
||||
|
||||
# other variables
|
||||
dir=`pwd`
|
||||
user=`whoami`
|
||||
host=`hostname`
|
||||
if [[ -z "$DISPLAY" ]] ; then
|
||||
echo 'Display variable not set'
|
||||
echo 'If ImageJ fails to load, try '
|
||||
echo '% setenv DISPLAY yourcomputer:0'
|
||||
echo 'if you use the "csh" or for "bash" try'
|
||||
echo '% export DISPLAY=yourcomputer:0'
|
||||
display='default'
|
||||
else
|
||||
display="$DISPLAY"
|
||||
fi
|
||||
|
||||
declare -i port=0
|
||||
declare -i verbosity=0
|
||||
images=''
|
||||
macrocmd=''
|
||||
macroargs=''
|
||||
|
||||
|
||||
function usage {
|
||||
echo
|
||||
echo 'Image display and analysis program. Opens formats including:'
|
||||
echo 'UNC, Analyze, Dicom, NIFTI, Tiff, Jpeg, Gif, PNG ...'
|
||||
echo
|
||||
echo 'imagej [options] image [ image2 ... image3 ]'
|
||||
echo ' -h print help and more options'
|
||||
echo ' -o open images in an open ImageJ panel'
|
||||
echo ' -p <N> open images in ImageJ panel number <N>'
|
||||
echo " -x <MB> set available memory (default=${mem} max=${max_mem})"
|
||||
echo
|
||||
}
|
||||
|
||||
function fullusage {
|
||||
echo
|
||||
echo 'Image display and analysis program. Opens formats including:'
|
||||
echo 'UNC, Analyze, Dicom, NIFTI, Tiff, Jpeg, Gif, PNG ...'
|
||||
echo
|
||||
echo 'imagej [options] image [ image2 ... image3 ] -> open images'
|
||||
echo
|
||||
echo 'basic options:'
|
||||
echo ' -h print help and more options'
|
||||
echo ' -o open images in existing ImageJ panel if one exists'
|
||||
echo ' -p <N> open images in existing ImageJ panel number <N>'
|
||||
echo " -x <MB> set available memory (default=${mem} max=${max_mem})"
|
||||
echo
|
||||
echo 'advanced options:'
|
||||
echo ' -c enable plugin compilation within imagej'
|
||||
echo ' -d use development version'
|
||||
echo ' -v be verbose (vv or vvv increases verbosity)'
|
||||
echo
|
||||
echo 'options for batch processing:'
|
||||
echo " -e 'Macro Code' execute macro code"
|
||||
echo " -r 'Menu Command' run menu command"
|
||||
echo "Quotation marks '' are required around commands including spaces"
|
||||
echo 'Commands can be sent to open ImageJ panels with the -p option'
|
||||
echo
|
||||
echo 'options for macros:'
|
||||
echo 'imagej [-i image] [-b|-m] [arg1 ... argN] '
|
||||
echo ' -b macro run macro without graphics window'
|
||||
echo ' -m macro run macro'
|
||||
echo '"image" will be opened before macro is run'
|
||||
echo 'all following arguments are passed to macro'
|
||||
echo
|
||||
echo "Documentation - $doc_url "
|
||||
echo "Report problems with this software to $ijadmin"
|
||||
echo
|
||||
}
|
||||
|
||||
function macroCmdError {
|
||||
fullusage
|
||||
echo 'Only one command option (-b -e -m OR -r) may be specified' 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
function getFullPath {
|
||||
# Return full path to file
|
||||
# treats multiple arguments as a single file with spaces
|
||||
if (( $# == 0 )) ; then
|
||||
echo "error getting full path for '${*}'" 1>&2
|
||||
fi
|
||||
pwd_getFullPath="$PWD"
|
||||
\cd $(dirname "${*}") > /dev/null
|
||||
dir_getFullPath="$PWD"
|
||||
\cd "$pwd_getFullPath" > /dev/null
|
||||
echo "$dir_getFullPath"/$(basename "${*}")
|
||||
}
|
||||
function derefln {
|
||||
# Returns the full path of file to which link points
|
||||
# following multiple levels of symbolic links.
|
||||
# NOTE: if you use this function in a script, don't use any
|
||||
# of the variable names used here
|
||||
if (( $# == 0 )) ; then
|
||||
return
|
||||
fi
|
||||
local the_link="$1"
|
||||
local link_dir
|
||||
local current_dir="$PWD"
|
||||
while file "$the_link" | grep symbolic > /dev/null ; do # resolve links until target is regular file
|
||||
if [[ "$the_link" == */* ]] ; then # path contains /
|
||||
\cd $(dirname "${the_link}") > /dev/null
|
||||
the_link=$(basename "$the_link")
|
||||
fi
|
||||
link_dir="$PWD"
|
||||
# some versions of 'file' surround the path in `' quotes, hence the tr to remove them
|
||||
the_link=$(file "${the_link}" | awk '/symbolic link/ {print $NF}' | tr -d "\140\047" )
|
||||
if [[ "$the_link" != /* ]] ; then # path is not absolute path - make it one
|
||||
the_link="$link_dir/$the_link"
|
||||
fi
|
||||
\cd "$current_dir" > /dev/null
|
||||
done
|
||||
echo $the_link
|
||||
}
|
||||
|
||||
|
||||
# parse input arguments
|
||||
while getopts b:cde:hi:m:nop:r:vx: options
|
||||
do
|
||||
case $options in
|
||||
b) if [[ -n "$macrocmd" ]] ; then macroCmdError ; fi
|
||||
macrocmd="-batch ${OPTARG}"
|
||||
;;
|
||||
c) modules="${modules:-}${modules+:}${tools}"
|
||||
;;
|
||||
d) ij_path="$ij_path_dev"
|
||||
;;
|
||||
e) if [[ -n "$macrocmd" ]] ; then macroCmdError ; fi
|
||||
macrocmd='-eval'
|
||||
macroargs="'${OPTARG}'"
|
||||
;;
|
||||
h) fullusage
|
||||
exit 0
|
||||
;;
|
||||
i) images="${images}'${OPTARG}' "
|
||||
;;
|
||||
m) if [[ -n "$macrocmd" ]] ; then macroCmdError ; fi
|
||||
macrocmd="-macro ${OPTARG}"
|
||||
;;
|
||||
n) newwindow='true'
|
||||
;;
|
||||
o) newwindow='false'
|
||||
;;
|
||||
p) newwindow='false'
|
||||
port="${OPTARG}"
|
||||
if (( "$port" < 1 || "$port" > 99 )) ; then
|
||||
echo "${OPTARG} is not a permissible value for port number (-p)" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
r) if [[ -n "$macrocmd" ]] ; then macroCmdError ; fi
|
||||
macrocmd='-run'
|
||||
macroargs="'${OPTARG}'"
|
||||
;;
|
||||
v) verbosity=verbosity+1
|
||||
if (( $verbosity == 2 )) ; then set -x ; fi
|
||||
if (( $verbosity == 3 )) ; then set -v ; fi
|
||||
;;
|
||||
x) mem="${OPTARG}"
|
||||
newwindow='true'
|
||||
if (( $mem < $min_mem || $mem > $max_mem )) ; then
|
||||
echo "${OPTARG} is not a permissible value for memory (-x)" 1>&2
|
||||
echo "min=${min_mem}, max=${max_mem}" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
\?) usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
#for ((i=1; i < $OPTIND; i++))
|
||||
#do
|
||||
# shift
|
||||
#done
|
||||
## above syntax not supported in bash < 2.05
|
||||
declare -i i=1
|
||||
while (( i < $OPTIND )) ; do
|
||||
shift
|
||||
i=i+1
|
||||
done
|
||||
|
||||
if [[ "$#" == 0 && -z "$macrocmd" ]] ; then
|
||||
usage
|
||||
fi
|
||||
|
||||
# The best way to install .jar libraries required by plugins is to copy them
|
||||
# to the imagej plugins/jars directory
|
||||
# Alternatively, either copy them to ${ij_path}/jre/lib/ext/ or add the .jar
|
||||
# filepath to the modules line below. Paths are separated by a colon
|
||||
# Classpath must follow command line arguments, as ij_path is dependent on the -d option
|
||||
|
||||
# Resolving ij.jar path. If ij.jar is a symbolic link to ij_<version>.jar
|
||||
# this allows updating ij.jar without crashing running sessions
|
||||
ij_jar_path=$(derefln ${ij_path}/ij.jar)
|
||||
|
||||
for mod_jar in ${ij_path}/lib/*jar ; do
|
||||
modules="${modules:-}${modules+:}$mod_jar"
|
||||
done
|
||||
modules="-cp ${ij_jar_path}:${modules+:}${modules:-}"
|
||||
#${ij_path}/plugins/jars/dcmie.jar
|
||||
|
||||
export LD_LIBRARY_PATH="${ij_path}/lib/${OS}_$processor"
|
||||
if (( $verbosity > 0 )) ; then
|
||||
echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
|
||||
fi
|
||||
|
||||
# -b and -m options only:
|
||||
# remaining command line arguments are passed as macro arguments
|
||||
# separated by $separator
|
||||
if [[ -n "$macrocmd" && -z "$macroargs" ]] ; then
|
||||
while (( "$#" > 0 )) ; do
|
||||
if [[ -z "$macroargs" ]] ; then
|
||||
macroargs="${1}"
|
||||
else
|
||||
macroargs="${macroargs}${separator}${1}"
|
||||
fi
|
||||
shift
|
||||
done
|
||||
macroargs="'$macroargs'"
|
||||
fi
|
||||
|
||||
# PROTECT POSSIBLE SPACES IN IMAGE FILENAMES
|
||||
if (( "$#" > 0 )) ; then
|
||||
while (( "$#" > 0 )) ; do
|
||||
filearg="${1}"
|
||||
# full file path required when sending images to running ImageJ panel
|
||||
if [[ "${newwindow}" == 'false' && -f "${filearg}" ]] && ! expr "${filearg}" : '/.*' > /dev/null; then
|
||||
filearg="$(getFullPath ${filearg})"
|
||||
fi
|
||||
images="${images}'$filearg' "
|
||||
shift
|
||||
done
|
||||
fi
|
||||
|
||||
# CREATE IMAGEJ SOCKET-LOCK DIRECTORY IF NON EXISTANT
|
||||
if [[ ! -d "$ij_tmp" ]] ; then
|
||||
mkdir "$ij_tmp"
|
||||
chmod 777 "$ij_tmp"
|
||||
fi
|
||||
|
||||
# CREATE IMAGEJ LOG FILE IF NON EXISTANT
|
||||
if [[ -n "$ij_log" && ! -f "$ij_log" ]] ; then
|
||||
touch "$ij_log"
|
||||
chmod 666 "$ij_log"
|
||||
fi
|
||||
|
||||
# CREATES A TEMP FILE INDICATING A PORT IS IN USE BY IMAGEJ
|
||||
cd "$ij_tmp"
|
||||
declare -i count=1
|
||||
portopen='false'
|
||||
lockFileCreated='false'
|
||||
declare -a locklist=(`ls | grep '[0-9][0-9]-.*'`)
|
||||
|
||||
[[ -n "$ij_log" ]] && echo -e "$$\t$(date)\tNew Window = $newwindow" >> "$ij_log" 2> /dev/null
|
||||
[[ -n "$ij_log" ]] && echo -e "$$\t$(date)\tPort = $port" >> "$ij_log" 2> /dev/null
|
||||
[[ -n "$ij_log" ]] && echo -e "$$\t$(date)\tlocklist: \n ${locklist[*]}" >> "$ij_log" 2> /dev/null
|
||||
if (( $verbosity > 0 )) ; then echo -e "locklist: \n ${locklist[*]}" ; fi
|
||||
|
||||
# PORT SPECIFIED BY USER
|
||||
if (( $port > 0 )) ; then
|
||||
# look for a lock on the port specified
|
||||
for lockname in ${locklist[*]} ; do
|
||||
prefix=`printf '%02u' $port`
|
||||
if [[ "$lockname" == ${prefix}-${user}-${host}* ]] ; then
|
||||
# found lock on the requested port, owned by user on current display
|
||||
portopen='true'
|
||||
if (( $verbosity > 0 )) ; then echo "Using socket lock: $lockname" ; fi
|
||||
count=$port
|
||||
break
|
||||
elif [[ "$lockname" == ${prefix}-* ]] ; then
|
||||
echo "Port $port is in use by some other user or a different host" 1>&2
|
||||
if (( $verbosity > 0 )) ; then echo "Port lock: $lockname" ; fi
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
# specified port not in use
|
||||
count=$port
|
||||
|
||||
# IF EXISTING WINDOW IS REQUESTED, LOOK FOR LISTENING PORT
|
||||
elif [[ "$newwindow" == 'false' && ${#locklist} != 0 ]] ; then
|
||||
# look for a lock on the current display for this user
|
||||
for lockname in ${locklist[*]} ; do
|
||||
if [[ "$lockname" == [0-9][0-9]-${user}-${host}-${display} ]] ; then
|
||||
portopen='true'
|
||||
if (( $verbosity > 0 )) ; then echo "Found socket lock: $lockname" ; fi
|
||||
# if a matching user/display is found, use this one
|
||||
count="${lockname%-*-*-*}"
|
||||
#count=`echo $lockname | sed -e 's/^\([0-9][0-9]\).*/\1/' -e 's/^0//'` # csh?
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# IF A NEW PORT IS TO BE USED
|
||||
if [[ "$portopen" == 'false' ]] ; then
|
||||
# new window requested or no matching port found
|
||||
# if port is not specified, look for first free port
|
||||
if (( "$port" == 0 )) ; then
|
||||
if (( ${#locklist} == 0 )) ; then
|
||||
# no active locks - use first port
|
||||
count=1
|
||||
else
|
||||
# active locks - check each port number so see if it is in use
|
||||
# this is not synchronised!!
|
||||
count=0
|
||||
inuse='true'
|
||||
while [[ "$inuse" == 'true' ]] ; do
|
||||
count=count+1
|
||||
prefix=`printf '%02u' $count`
|
||||
inuse='false'
|
||||
for lockname in ${locklist[*]} ; do
|
||||
if [[ "$lockname" == ${prefix}-* ]] ; then
|
||||
inuse='true'
|
||||
fi
|
||||
done
|
||||
done
|
||||
fi
|
||||
fi
|
||||
# CREATING A NEW PORT LOCK
|
||||
prefix=`printf '%02u' $count`
|
||||
lockname=${prefix}-${user}-${host}-${display}
|
||||
|
||||
[[ -n "$ij_log" ]] && echo -e "$$\t$(date)\tCreating lock\t$lockname" >> "$ij_log" 2> /dev/null
|
||||
if (( $verbosity > 0 )) ; then echo -n "creating lock $lockname ... " ; fi
|
||||
touch $lockname
|
||||
trap '\rm -f ${ij_tmp}/$lockname >/dev/null ; [[ -n "$ij_log" ]] && echo -e "$$\t$(date)\tReleasing lock\t$lockname" >> "$ij_log" 2> /dev/null' EXIT TERM KILL
|
||||
# Quitting ImageJ sends EXIT, as does a kill/kill -9
|
||||
# CTRL+C in terminal sends INT + EXIT
|
||||
# System shutdown sends TERM (+EXIT??)
|
||||
|
||||
if (( $verbosity > 0 )) ; then echo 'done' ; fi
|
||||
|
||||
lockFileCreated='true'
|
||||
if [[ -z "$macrocmd" ]] ; then
|
||||
echo 'Open other images in this ImageJ panel as follows:'
|
||||
echo " imagej -p $count <image1> [<image2> ... <imageN>]"
|
||||
fi
|
||||
[[ -n "$ij_log" ]] && echo -e "$$\t$(date)\tSocket lock:\t$lockname" >> "$ij_log" 2> /dev/null
|
||||
if (( $verbosity > 0 )) ; then echo "Socket lock: $lockname" ; fi
|
||||
echo
|
||||
fi
|
||||
|
||||
if (( $verbosity > 0 )) ; then
|
||||
echo ${JAVA_HOME}/bin/java ${java_arch} -mx${mem}m ${modules} ij.ImageJ -ijpath ${ij_path} -port${count} ${images} ${macrocmd} ${macroargs}
|
||||
fi
|
||||
|
||||
cd "$dir"
|
||||
eval "${JAVA_HOME}/bin/java ${java_arch} -mx${mem}m ${modules} ij.ImageJ -ijpath ${ij_path} -port${count} ${images} ${macrocmd} ${macroargs} "
|
||||
exit 0
|
|
@ -0,0 +1,8 @@
|
|||
[Desktop Entry]
|
||||
Categories=Education;
|
||||
Comment=Scientific image manipulation software
|
||||
Exec=imagej
|
||||
Icon=imagej
|
||||
Name=ImageJ
|
||||
StartupNotify=false
|
||||
Type=Application
|
Binary file not shown.
After Width: | Height: | Size: 234 B |
|
@ -0,0 +1,19 @@
|
|||
# HOW TO EDIT THIS FILE:
|
||||
# The "handy ruler" below makes it easier to edit a package description. Line
|
||||
# up the first '|' above the ':' following the base package name, and the '|'
|
||||
# on the right side marks the last column you can put a character in. You must
|
||||
# make exactly 11 lines for the formatting to be correct. It's also
|
||||
# customary to leave one space after the ':'.
|
||||
|
||||
|-----handy-ruler------------------------------------------------------|
|
||||
ImageJ: ImageJ (Image processing and analysis in Java)
|
||||
ImageJ:
|
||||
ImageJ: ImageJ is a Java image processing program inspired by NIH Image
|
||||
ImageJ: for the Macintosh. It was designed with an open architecture that
|
||||
ImageJ: provides extensibility via Java plugins. User-written plugins make
|
||||
ImageJ: it possible to solve almost any image processing or analysis problem.
|
||||
ImageJ:
|
||||
ImageJ: Home: http://rsb.info.nih.gov/ij/
|
||||
ImageJ:
|
||||
ImageJ:
|
||||
ImageJ:
|
Loading…
Reference in New Issue