我想用不規則的蒙版剪輯影像,但不知道要使用哪些庫,或者是否可以使用magickwith cowplot。
假設我通過magick庫將影像下載到 R 中:
library(magick)
#> Linking to ImageMagick 6.9.12.3
#> Enabled features: cairo, fontconfig, freetype, heic, lcms, pango, raw, rsvg, webp
#> Disabled features: fftw, ghostscript, x11
library(cowplot)
tdir=tempdir()
url = "https://upload.wikimedia.org/wikipedia/commons/b/b3/USA-NYC-Empire_State1.JPG"
download.file(url,destfile = file.path(tdir,"/ESB.jpg"))
#if(file.exists(paste(tdir,"/ESB.jpg",sep=""))==FALSE){
# download.file(url, destfile = file.path(tdir,"ESB.jpg"))}
ESB = image_read(path = paste(tdir,"/ESB.jpg",sep=""))
ESB2 = image_resize(ESB, "500x500")
我可以ggdraw()從cowplot包中使用此影像頂部的 draw_lines ,如下所示:
ggdraw()
draw_image(ESB2)
draw_line(x=c(.5,.285),y=c(.9,.1),col='red')
draw_line(x=c(.5,.715),y=c(.9,.1),col='red')
draw_line(x=c(.715,.285),y=c(.1,.1),col='red')

但是沒有辦法剪裁這些線之外的影像區域。我看過其他 Stack Exchange 帖子,它們夾在更簡單的多邊形上,比如圓形。有沒有辦法以這種方式剪輯影像?我愿意接受其他圖書館來解決這個問題。
uj5u.com熱心網友回復:
從 R 4.1 開始,我們可以在網格圖形中定義剪貼蒙版。將您的魔法影像轉換為 rasterGrob 并將其繪制在具有由三角形坐標制成的蒙版的視口中。以下是完整的代表:
library(magick)
#> Linking to ImageMagick 6.9.12.3
#> Enabled features: cairo, freetype, fftw, ghostscript, heic, lcms, pango, raw, rsvg, webp
#> Disabled features: fontconfig, x11
library(grid)
url <- paste0("https://upload.wikimedia.org/wikipedia/commons/",
"b/b3/USA-NYC-Empire_State1.JPG")
ESB <- image_read(url)
ESB2 <- image_resize(ESB, "500x500")
ESB_grob <- rasterGrob(ESB2)
mask <- as.mask(polygonGrob(x = c(0.285, 0.5, 0.715, 0.285),
y = c(0.1, 0.9, 0.1, 0.1)))
grid.newpage()
pushViewport(viewport(mask = mask))
grid.draw(ESB_grob)

使用reprex v2.0.2創建于 2022-10-13
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/514729.html
標籤:r图片夹子
上一篇:過濾器/查詢復選框
