水印加入R

时间:2017-10-10 13:07:35

标签: r

我在R中使用magick库。我想在某些图片上添加水印。

我使用了image_annotate函数,如下所示。

img <- image_read("C:\\Users\\Maydin\\Desktop\\manzara.png")
image_annotate(img, "my watermark", gravity = "northwest", location = "+200+275",
               degrees = -30, size =50, font = NULL, color = "transparent",
               strokecolor = "gray90", boxcolor = NULL)

最后,输出看起来像这样;

enter image description here

然而,我想拥有的是这样的,

enter image description here

magick中的R是否可行?

2 个答案:

答案 0 :(得分:5)

例如,这个

download.file("https://i.stack.imgur.com/7X5To.png", tf<-tempfile(fileext = ".png"), mode="wb")
library(magick)
img <- image_read(tf)
library(extrafont)
truetype_path <- paste0("@", subset(fonttable(), FullName=="Matura MT Script Capitals", fontfile)[1,])
image_annotate(img, "my watermark", gravity = "northwest", location = "+70+220",
               degrees = -30, size = 80, font = truetype_path, color = "#FFFFFF66",
               strokecolor = NULL, boxcolor = NULL)

给出了这张图片:

enter image description here

即,选择一个漂亮的字体,比如 Matura MT Script Capitals ,告诉image_annotate在硬盘上找到它的地方,调整color参数中的不透明度 - 等等瞧。字体不会掉落阴影或显示浮雕,但也许您可以通过绘制文本两次来模拟这一点,黑暗阴影与另一个光线稍微偏移。

答案 1 :(得分:1)

@lukA 很好地演示了使用 extrafonts 包和 ma​​gick 包的解决方案,但看起来您可以在 image_annotate() 中按名称引用字体而无需智能查找完整路径。使用 extrafonts::fonttable() 查找名称。

library(extrafonts)
library(magick)
#download original example file
download.file("https://i.stack.imgur.com/7X5To.png", tf<-tempfile(fileext = ".png"), mode="wb")
img <- image_read(tf)
 
#Use stroke to create an outline of the text with 50% alpha  
 magick::image_annotate(img, "Preview", location = "+100+175", degrees = -30, size=75, weight=700, font = "MonotypeCorsiva" , color = "transparent",
    strokecolor = "#00000050",  boxcolor = NULL)

Demonstrates annotating image with magick package.