Image Frames and Animation
Operations to manipulate or combine multiple frames of an image. Details below.
image_animate( image, fps = 10, delay = NULL, loop = 0, dispose = c("background", "previous", "none"), optimize = FALSE ) image_coalesce(image) image_morph(image, frames = 8) image_mosaic(image, operator = NULL) image_flatten(image, operator = NULL) image_average(image) image_append(image, stack = FALSE) image_apply(image, FUN, ...) image_montage( image, geometry = NULL, tile = NULL, gravity = "Center", bg = "white", shadow = FALSE )
image
: magick image object returned by image_read()
or image_graph()
fps
: frames per second. Ignored if delay
is not NULL
.
delay
: delay after each frame, in 1/100 seconds. Must be length 1, or number of frames. If specified, then fps
is ignored.
loop
: how many times to repeat the animation. Default is infinite.
dispose
: a frame disposal method
from dispose_types()
optimize
: optimize the gif
animation by storing only the differences between frames. Input images must be exactly the same size.
frames
: number of frames to use in output animation
operator
: string with a composite operator
from compose_types()
stack
: place images top-to-bottom (TRUE) or left-to-right (FALSE)
FUN
: a function to be called on each frame in the image
...
: additional parameters for FUN
geometry
: a geometry string that defines the size the individual thumbnail images, and the spacing between them.
tile
: a geometry string for example "4x5 with limits on how the tiled images are to be laid out on the final result.
gravity
: a gravity direction, if the image is smaller than the frame, where in the frame is the image to be placed.
bg
: a background color string
shadow
: enable shadows between images
For details see Magick++ STL
documentation. Short descriptions:
gif
format.The image_apply function calls an image function to each frame and joins results back into a single image. Because most operations are already vectorized this is often not needed. Note that FUN()
should return an image. To apply other kinds of functions to image frames simply use lapply , vapply , etc.
# Combine images logo <- image_read("https://jeroen.github.io/images/Rlogo.png") oldlogo <- image_read("https://jeroen.github.io/images/Rlogo-old.png") # Create morphing animation both <- image_scale(c(oldlogo, logo), "400") image_average(image_crop(both)) image_animate(image_morph(both, 10)) # Create thumbnails from GIF banana <- image_read("https://jeroen.github.io/images/banana.gif") length(banana) image_average(banana) image_flatten(banana) image_append(banana) image_append(banana, stack = TRUE) # Append images together wizard <- image_read("wizard:") image_append(image_scale(c(image_append(banana[c(1,3)], stack = TRUE), wizard))) image_composite(banana, image_scale(logo, "300")) # Break down and combine frames front <- image_scale(banana, "300") background <- image_background(image_scale(logo, "400"), 'white') frames <- image_apply(front, function(x){image_composite(background, x, offset = "+70+30")}) image_animate(frames, fps = 10) # Simple 4x3 montage input <- rep(logo, 12) image_montage(input, geometry = 'x100+10+10', tile = '4x3', bg = 'pink', shadow = TRUE) # With varying frame size input <- c(wizard, wizard, logo, logo) image_montage(input, tile = '2x2', bg = 'pink', gravity = 'southwest')
Other image: _index_
, analysis
, attributes()
, color
, composite
, defines
, device
, edges
, editing
, effects()
, fx
, geometry
, morphology
, ocr
, options()
, painting
, segmentation
, transform()
, video