从 magick-image 到 rasterBrick

from magick-image to rasterBrick

我有一个图像必须用包 magick 处理。所以输出属于classmagick-image。我需要将其转换为 class rasterBrick 以便进一步处理。

如何将对象 magick-image 转换为 rasterBrick?我需要避免保存和加载中间临时文件。

library(magick)
library(raster)

# load sample image
i <- image_read("https://i.picsum.photos/id/10/2500/1667.jpg?hmac=J04WWC_ebchx3WwzbM-Z4_KC_LeLBWr5LZMaAkWkF68")

# does not work
r <- raster::raster(i)

# workaround that I must avoid
image_write(i,"temp_image.jpg")
t <- brick("temp_image.jpg")
t

你可以这样做:

library(terra)
r <- as.raster(i) |> as.matrix() |> rast()
r
#class       : SpatRaster 
#dimensions  : 1667, 2500, 3  (nrow, ncol, nlyr)
#resolution  : 1, 1  (x, y)
#extent      : 0, 2500, 0, 1667  (xmin, xmax, ymin, ymax)
#coord. ref. :  
#source      : memory 
#colors RGB  : 1, 2, 3 
#names       : red, green, blue 
#min values  :   0,     8,    0 
#max values  : 252,   250,  248 

plot(r)

您可能想坚持使用 terra,但如果您想回到 RasterBrick,您可以添加

library(raster)
b <- brick(r)