Authors:
Alex Fu
Norm Matloff (maintainer, [email protected])
Ariel Shin
Imaging package, with an emphasis on journaling, i.e. recording history of changes. Undo/redo operations, ability to display multiple versions (currently under construction), etc. The history is persistent, i.e. across sessions. Can be run from the R command line, or from a Shiny-based GUI.
You will need the following packages for the text-based application:
- fftwtools: Install from CRAN, except for Linux; for the latter, sse these special instructions.
-
EBImage: Run these commands from within R:
source("http://bioconductor.org/biocLite.R", verbose = FALSE) biocLite("EBImage", suppressUpdates=TRUE, suppressAutoUpdate=FALSE, ask = FALSE)
If you wish to use the GUI, see the instructions below.
Having done this, you can install ShinyImage. For instance, download the .zip package available here and unpack it, creating a directory/folder ShinyImage-master. Then from a terminal window, run
R CMD build ShinyImage-master
R CMD INSTALL -l z ShinyImage_0.1.0.tar.gz
with z being the directory/folder you wish to install ShinyImg to (changing the version number as necessary).
Alternatively, ShinyImage can be installed using devtools. User's working directory must be set to ShinyImage-master. From R,
> install.packages(c('devtools', 'roxygen2'))
> devtools::install()
Here we will perform several actions, both to illustrate some ShinyImage operations and also to show the journaling. All operations will use the R command line; examples of the GUI are given later in this document.
# load image, whether local file or from the Web
# the image being used is titled 'A tiger in the water'
# By Bob Jagendorf
# [CC BY 2.0 (http://creativecommons.org/licenses/by/2.0)],
# via Wikimedia Commons
> tiger <-
shinyimg$new("https://upload.wikimedia.org/wikipedia/commons/1/1c/Tigerwater_edit2.jpg")
# 'tiger' is an object of class 'shinyimg', which in turn is a subclass
# of 'R6'
# set autodisplay on;
# after first image modification,
# image will render and pop up in a new window
# or user can manually render image
> tiger$set_autodisplay()
# manually rendering image
> tiger$render()
# crop the image
> tiger$crop()
[1] "Select the two opposite corners of a rectangle on the plot."
# add brightness
> tiger$add_brightness()
# add contrast
> tiger$add_contrast()
# add gamma
> tiger$add_gamma()
# add blur
> tiger$add_blur()
# remove brightness
> tiger$remove_brightness()
# remove contrast
> tiger$remove_contrast()
# remove gamma
> tiger$remove_gamma()
# remove blur
> tiger$remove_blur()
# we have had nine actions, and can undo the last 8 of them
# we will undo the last five actions (remove blur and remove gamma)
# by calling undo five times
# undoes the removal of the blur
> tiger$undo()
# undoes the removal of gamma
> tiger$undo()
# undoes the removal of contrast
> tiger$undo()
#undoes the removal of brightness
> tiger$undo()
# undoes the adding of the blur
> tiger$undo()
# we can also redo the adding of the blur
> tiger$redo()
# we can also save the image to edit later on, using the ShinyImage format,
# which will contain not only the newest image version but also undo
# information needed to restore any previous version
> tiger$save("tiger-water.si")
# and later we can reload after a cold boot
> tiger <- shinyload("tiger-water.si")
# if you want to revert to a previous saved state, you can also do:
> tiger$load("tiger-water.si")
# this will load the image back to the state it was in when you saved the image.
> tiger$undo() # not too late to undo changes made before the save!
# lastly, we can save the currently loaded image version to a standard format
> tiger$saveImage('tiger.jpg')
# we can save it as either jpg, png, or tiff
> tiger$saveImage('tiger.png')
# if a user does not specify the name, the default is temp.jpeg
> tiger$saveImage()
Download from CRAN:
install.packages(c('shiny','shinyjs'))
Run these commands from within R.
> runShiny()
# using our previous example of our shinyimg object tiger
> runShiny(tiger)
- Download http://www.fftw.org/fftw-3.3.6-pl1.tar.gz
- Unpack, say to **x/fftw-3.3.6-pl1** and from that directory run
./configure --prefix=y --enable-shared=yes
where y is your desired installation directory for fftwtools, say /usr/local.
- Run the usual make; make install sequence.
- Set environment variables (no spaces around the = sign!):
export C_INCLUDE_PATH=x/fftw-3.3.6-pl1/api export LD_RUN_PATH=y/lib export LIBRARY_PATH=y/lib
- You may need to install libtiff-dev, say by
sudo apt-get install libtiff-dev
- You may also need to install fftw-dev, by
sudo apt-get install fftw-dev
- If **fftw** library does not get properly installed, try
sudo apt-get install fftw3 fftw3-dev pkg-config
- Then run the R steps as above.