magick (version 2.0)

animation: Image Frames and Animation

Description

Operations to manipulate or combine multiple frames of an image. Details below.

Usage

image_animate(image, fps = 10, loop = 0, dispose = c("background",
  "previous", "none"))

image_morph(image, frames = 8)

image_mosaic(image, operator = NULL)

image_montage(image)

image_flatten(image, operator = NULL)

image_average(image)

image_append(image, stack = FALSE)

image_apply(image, FUN, ...)

Arguments

image

magick image object returned by image_read() or image_graph()

fps

frames per second

loop

how many times to repeat the animation. Default is infinite.

dispose
frames

number of frames to use in output animation

operator
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

Details

For details see Magick++ STL documentation. Short descriptions:

  • image_animate coalesces frames by playing the sequence and converting to gif format.

  • image_morph expands number of frames by interpolating intermediate frames to blend into each other when played as an animation.

  • image_mosaic inlays images to form a single coherent picture.

  • image_montage creates a composite image by combining frames.

  • image_flatten merges frames as layers into a single frame using a given operator.

  • image_average averages frames into single frame.

  • image_append stack images left-to-right (default) or top-to-bottom.

  • image_apply applies a function to each frame

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.

See Also

Other image: _index_, analysis, attributes, color, composite, device, edges, editing, effects, fx, geometry, morphology, ocr, options, painting, segmentation, transform, video

Examples

Run this code
# NOT RUN {
# Combine images
logo <- image_read("https://jeroen.github.io/images/Rlogo.png")
oldlogo <- image_read("https://developer.r-project.org/Logo/Rlogo-3.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)
# }

Run the code above in your browser using DataCamp Workspace