inst/makeImages.r

library(pixelShift)
library(imager)
library(data.table)
library(grid)

pic <- load.image("./inst/img/input/myImage.jpg")
plot(pic)

## Shift one way

rowS <- seq(1, ncol(pic), by = 50)
rowE <- c((na.omit(shift(rowS, type = "lead")) - 1), ncol(pic))
rowMove <- rep(30, length(rowS)) * c(seq(-3, 3), seq(4, -4))

pixelShift(pic,
           "./inst/img/output/myImage_ex01.jpg",
           rowS,
           rowE,
           rowMove)

## Shift another way

rowS <- seq(1, ncol(pic), by = 50)
rowE <- c((na.omit(shift(rowS, type = "lead")) - 1), ncol(pic))
rowMove <- rep(30, length(rowS)) * c(seq(3, -3), seq(-4, 4))

pixelShift(pic,
           "./inst/img/output/myImage_ex02.jpg",
           rowS,
           rowE,
           rowMove)

## Shift GIF

rowS <- seq(1, ncol(pic), by = 50)
rowE <- c((na.omit(shift(rowS, type = "lead")) - 1), ncol(pic))
rowShiftSeq <- c(seq(-4, 4), seq(3, -3))
length(rowS)
length(rowShiftSeq)
rowMove <- rep(35, length(rowS)) * rowShiftSeq 

shiftRowMove <- function(x){
    rowMove <<- c(rowMove[length(rowMove)], rowMove[1:(length(rowMove)-1)])
}

rowMoves  <- lapply(1:length(rowMove), shiftRowMove)
shiftTabs <- lapply(rowMoves, function(rowMove) data.table(rowS, rowE, rowMove))

gifPix <- function(x){
    pixelShift(pic,
               paste0("./inst/img/output/myImage",
                      sprintf(fmt="%02d", x),
                      "_gif.jpg"),
               shiftTabs[[x]]$rowS,
               shiftTabs[[x]]$rowE,
               shiftTabs[[x]]$rowMove)
}

library(parallel)
cl <- makeCluster(detectCores(), type = "FORK")
parLapply(cl, 1:length(shiftTabs), gifPix)
stopCluster(cl)

system("convert -delay 10 ./inst/img/output/*_gif.jpg ./inst/img/output/myImage.gif")
file.remove(list.files("./inst/img/output", "_gif.jpg$", full.names = T))
jmt2080ad/pixelShift documentation built on May 5, 2019, 2:42 a.m.