嘗試裁剪 SVG 周圍的空白(在本例中為“透明空間”)。沒有真正看到一個簡單的方法來做到這一點。嘗試了 knitr::plot_crop() 和 magick::image_trim() 但無濟于事。這兩種方法的輸出都會移除 alpha 層并使其具有白色背景。
下面的 SVG 示例:
針織法:
knitr::plot_crop("~/Downloads/onions-pd.svg")
產生:

Imagemagick 版本:
library(magick)
img = image_read("~/Downloads/onions-pd.svg")
img = image_trim(img)
image_write(img,"~/Downloads/onions-pd.svg",format="svg")
產生:

uj5u.com熱心網友回復:
聽起來您想裁剪viewBoxsvg。可能有很多方法可以做到這一點,但一種是計算出新的 viewBox 坐標并將它們寫入 svg 檔案。
我們可以像這樣得到非透明部分的限制:
library(magick)
img <- image_read_svg("onions-pd.svg")
data <- image_data(img)
opaque <- which(data[4,,] != 0, arr.ind = TRUE)
limits <- paste(paste(apply(opaque, 2, min), collapse = ", "),
paste(apply(opaque, 2, max), collapse = ", "), sep = ", ")
limits
#> [1] "11, 64, 417, 440"
并將它們寫入 svg 檔案的副本,如下所示:
library(xml2)
onions_xml <- read_xml("onions-pd.svg")
xml_set_attr(onions_xml, attr = "viewBox", limits)
write_xml(onions_xml, "onions-cropped.svg")
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/349197.html
上一篇:將值放入子串列
下一篇:在打字稿中將陣列轉換為json
