如何在R 3.4.4中加载显示URL图片?EBImage无法安装
替代EBImage在老版本R中下载并显示图片的方案
你遇到的问题很常见——EBImage是Bioconductor上的包,而R 3.4.4是比较老旧的版本(发布于2018年),很多新包包括EBImage已经不再支持这个版本了。不过不用担心,有几个更兼容老版本R的工具可以实现下载并显示图片的需求,下面给你几个实用的方案:
方案1:使用png + grid包(基础且稳定)
png包是CRAN上的基础包,对老版本R支持很好,配合grid包可以轻松显示图片:
首先安装依赖包:
install.packages("png") install.packages("grid")
然后运行以下代码:
library(png) library(grid) # 下载图片到临时文件(避免本地留存) temp_img <- tempfile(fileext = ".png") download.file("https://www.yr.no/assets/images/logo-yr-50.png", temp_img, mode = "wb") # 读取图片并显示 img_data <- readPNG(temp_img) grid.raster(img_data)
注意:
download.file必须加mode = "wb",因为图片是二进制文件,不加的话会导致图片损坏无法读取。
方案2:使用magick包(更便捷,支持多格式)
magick是功能强大的图像处理包,支持直接从URL读取图片,不用手动下载到本地。如果你的R 3.4.4能安装它的话,这会是更省心的选择:
安装包:
install.packages("magick")
使用代码:
library(magick) # 直接读取URL图片并显示 img <- image_read("https://www.yr.no/assets/images/logo-yr-50.png") image_display(img)
方案3:使用Base R + png包(无需额外绘图包)
如果你习惯用Base R的绘图系统,可以用plot配合rasterImage来显示图片:
install.packages("png") library(png) # 下载图片到本地文件 download.file("https://www.yr.no/assets/images/logo-yr-50.png", "yr_logo.png", mode = "wb") # 读取图片 img_data <- readPNG("yr_logo.png") # 创建空白绘图区域,然后插入图片 plot(0:1, 0:1, type = "n", axes = FALSE, xlab = "", ylab = "") rasterImage(img_data, 0, 0, 1, 1)
额外建议
如果条件允许,强烈建议你升级到最新版本的R。老版本R不仅会错过很多新功能,还会面临包兼容性问题(像这次的EBImage就是例子),而且新版本的R在性能和稳定性上都有很大提升。
内容的提问来源于stack exchange,提问作者Idle Man
相关产品推荐
相关产品推荐

