我在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)
最后,输出看起来像这样;
然而,我想拥有的是这样的,
magick
中的R
是否可行?
答案 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)
给出了这张图片:
即,选择一个漂亮的字体,比如 Matura MT Script Capitals ,告诉image_annotate
在硬盘上找到它的地方,调整color
参数中的不透明度 - 等等瞧。字体不会掉落阴影或显示浮雕,但也许您可以通过绘制文本两次来模拟这一点,黑暗阴影与另一个光线稍微偏移。
答案 1 :(得分:1)
@lukA 很好地演示了使用 extrafonts 包和 magick 包的解决方案,但看起来您可以在 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)