从 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)
我有一个图像必须用包 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)