Now to see if we can add some watermarks in SAS ODS - I've seen pages on how to create watermarked reports using background images. The first part is creating the background image: we can steal some code from the earlier post on watermarks in R, and adapt it to create PNG backdrops for our reports.
So let's create a function which does this for us: we just tell it what we want the watermark to say, and pass it a couple parameters: the color, size, angle, and font of the text.
# create a date-stamped folder for the results
run.date <- format(Sys.Date(), "%m-%d-%Y")
working.dir <- paste0("c:/Data/Didactic/Results/", run.date)
create.watermark <- function(wm = "", rep.wm = T, n.reps = 5,
result.dir, res.wm = 1200, cex.wm = 2, font.wm = 2,
col.wm = rgb(1, 0, 0, .2), angle.wm = 45,
page.width = 8.5, page.height = 11, page.unit = "in") {
if (file.exists(working.dir)) {
setwd(file.path(working.dir))
} else {
dir.create(working.dir, recursive = T, showWarnings = F)
setwd(working.dir)
}
if (rep.wm == T) {
x.loc <- seq(0, 1, length.out = n.reps)
y.loc <- seq(1, 0, length.out = n.reps)
} else {
x.loc <- .5; y.loc <- .5;
n.reps <- 1
}
setwd(result.dir)
# create a date-stamped .png file
png(paste0("Watermark Background - ", wm, " ", run.date,
" ", res.wm, " dpi.png"),
width = page.width, height = page.height, res = res.wm,
units = page.unit)
par(mar = c(0, 0, 0, 0))
plot.new()
text(grconvertX(x.loc, from = "npc"),
grconvertY(y.loc, from = "npc"),
labels = paste(rep(wm, n.reps), collapse = " "),
cex = cex.wm, font = font.wm,
col = col.wm,
srt = angle.wm)
dev.off()
}
The program creates the image, and labels it appropriately with the watermark, run date, and resolution. In part 2, I'll see if I can make a nice looking report with the background image, maybe even using a report on simulated survival data.
Now, let's see if it works. First, let's create a repeated watermark across the page:
create.watermark(wm = "CONFIDENTIAL", result.dir = working.dir, res.wm = 300)
Next, just one single large watermark in the background:
create.watermark(wm = "FOR PEER REVIEW ONLY", rep.wm = F,
col.wm = rgb(0, 0, 1, .2), result.dir = working.dir, cex.wm = 5, res.wm = 300)
Suggestions for further improvements welcome!
Photo Watermark does exactly what the name suggests – it lets you add watermarks to photos – but the types of watermarks you can add are quite varied.
ReplyDeleteNot only can you add custom text as a watermark (including changing the font, size and color), you can also use your signature (or any other hand-written text) as a watermark by writing on the screen.
You can also apply stickers, a timestamp, a location, a mosaic effect, or ‘graffiti’ (which basically just lets you go wild on your images with a digital paintbrush). Whether you want to protect your photo or just log when and where it was taken, there should be a tool here to suit.
Photo Watermark is free, but it’s quite heavy on adverts. For $0.99/£0.89 per month you can get rid of them, but unless you’re adding watermarks to a ton of images it’s probably not worth it.