Learn R Programming

ShinyImage

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.

Installation

You will need the following packages for the command-line interface to the package:

source("http://bioconductor.org/biocLite.R", verbose = FALSE) #Install package
biocLite("EBImage", suppressUpdates=TRUE, suppressAutoUpdate=FALSE, ask = FALSE)
install.packages(c('shiny','shinyjs'))

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 location 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()

Example Usage

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
> tiger$save("tiger-water.si")
# and later we can come back after a cold boot to do:
> 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, if we want to save the physical image
> 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()

GUI Installation and Usage

Installation

Download from CRAN:

install.packages(c('shiny','shinyjs'))

Usage

Run these commands from within R.

> runShiny()
# using our previous example of our shinyimg object tiger
> runShiny(tiger)

Copy Link

Version

Install

install.packages('ShinyImage')

Monthly Downloads

5

Version

0.1.0

License

MIT + file LICENSE

Maintainer

Norm Matloff

Last Published

September 3rd, 2017

Functions in ShinyImage (0.1.0)

shinyload

Wrapper to load an image from a cold boot.
siaction

Class providing object describing one action.
runShiny-function

runShiny function to start shiny app
shinyimg

An EBImage wrapper with integrated history tracking.