R中image_read_svg函数无法调用及magick版本更新问题
解决magick包
image_read_svg找不到及无法更新的问题 嘿,我来帮你拆解下这两个问题——其实它们是关联在一起的:image_read_svg()这个函数在你用的magick 0.4版本里压根就不存在,它是后续版本(大概从magick 2.0开始)才新增的功能。而你没法通过install.packages("magick")更新包,核心原因是你的R版本太老了(从警告信息能看到是3.2.5,这是2015年的版本),新版本magick对R版本有最低要求,旧版R兼容不了。
第一步:更新你的R版本
R 3.2.5早就停止维护了,很多新包都不再支持它,更新R是解决问题的根本:
- Windows/macOS用户:直接去R官方网站下载最新稳定版安装就行,安装完重启R,再执行
install.packages("magick")就能装最新版的magick了。 - Linux用户:根据你的发行版用包管理器更新,比如Ubuntu可以跑
sudo apt update && sudo apt install r-base,CentOS用sudo yum install R(具体命令可能随发行版版本略有不同)。
更新完R后,重新安装并验证magick版本:
install.packages("magick") # 查看当前版本 packageVersion("magick") # 这时候版本号应该远高于0.4,比如2.x或更高
第二步:验证image_read_svg功能
更新完magick后,再执行你的代码:
library(magick) tiger <- image_read_svg('http://jeroen.github.io/images/tiger.svg', width = 400) # 查看读取的SVG图像 tiger
这时候应该就能正常读取SVG文件了。
临时替代方案(如果暂时没法更新R)
要是因为某些原因暂时不能更新R,你可以试试用image_read()结合系统依赖来读取SVG,但得先在你的系统上装librsvg库:
- Windows:需要安装Rtools并确保包含相关依赖;
- macOS:用Homebrew执行
brew install librsvg; - Linux:Ubuntu跑
sudo apt install librsvg2-dev,CentOS用sudo yum install librsvg2-devel。
装完依赖后,用下面的代码读取SVG:
library(magick) # 用density参数控制分辨率,效果类似width tiger <- image_read('http://jeroen.github.io/images/tiger.svg', density = 400)
不过这只是临时的权宜之计,还是建议尽快更新R版本,不然后续还会遇到更多包兼容性问题。
内容的提问来源于stack exchange,提问作者lanselibai
相关产品推荐
相关产品推荐

