How to merge images into one file in a defined order
r
Solution
You can plot them all together using the `rasterImage` function and the png package. Here's a simple showing how to read in a PNG and then plot it (a bunch of times).
library("png") # for reading in PNGs
# example image
img <- readPNG(system.file("img", "Rlogo.png", package="png"))
# setup plot
par(mar=rep(0,4)) # no margins
# layout the plots into a matrix w/ 12 columns, by row
layout(matrix(1:120, ncol=12, byrow=TRUE))
# do the plotting
for(i in 1:120) {
plot(NA,xlim=0:1,ylim=0:1,xaxt="n",yaxt="n",bty="n")
rasterImage(img,0,0,1,1)
}
# write to PDF
dev.print(pdf, "output.pdf")
You would need to modify this slightly so that it calls each image object, rather than just plotting `img` over and over again.
Result:
Problem
I have around 100 images(png). Instead of doing that manually, I want to put them beside each other (12 images per line) in one single pdf in a defined order (based on file names). Does anybody have any suggestion? I tried according to what Thomas told me below, it paste them beside with a black margin, how can I remove that? ``` setwd(workingDir); files <- list.files(path=".", pattern="*.png", all.files=T, full.names=T) filelist <- lapply(files, readPNG) names(filelist) <- paste0(basename((files))) list2env(filelist, envir=.GlobalEnv) par(mar=rep(0,4)) layout(matrix(1:length(names(filelist)), ncol=15, byrow=TRUE)) for(i in 1:length(names(filelist))) { img <- readPNG(names(filelist[i])) plot(NA,xlim=0:1,ylim=0:1,xaxt="n",yaxt="n") rasterImage(img,0,0,1,1) } dev.print(pdf, "output.pdf") ```