在R中保存裁剪的图像

时间:2016-05-03 02:08:04

标签: r raster

我正在使用jpeg包将图像读入R.这会创建一个类nativeRaster的对象。我使用[运算符获取此图像的一部分。结果对象是整数矩阵。尝试保存此对象将返回错误image must be a matrix or array of raw or real numbers。我该怎么做才能保存这张新图片?

以下是重现错误的代码段

imageFile = 'address of the jpg file'
outputFile = 'new file to write into' 

image = jpeg::readJPEG(imageFile, native=TRUE)
output =  image[1:10,1:10]
writeJPEG(image = output, target = outputFile)

2 个答案:

答案 0 :(得分:1)

我认为函数writeJPEG采用nativeRaster类型的图像。我对此并不完全确定,但将输出类转换为nativeRaster对我来说很有用。

class(output) <- "nativeRaster"
writeJPEG(image = output, target = outputFile)

答案 1 :(得分:0)

即使我找不到解决方案,我也是通过使用imagemagick裁剪图像来解决这个问题。

system(paste('identify',
             imageFile), intern = TRUE) %>%
    regmatches(.,regexpr("(?<=[ ])[0-9]*?x[0-9]*?(?=[ ])",.,perl=T)) %>%
    strsplit('x') %>% .[[1]] %>% as.double

将返回图像的尺寸和

system(paste0('convert "',imageFile,
              '" -crop ',
              sizeX,
              'x',
              sizeY,
              '+',
              beginningX,
              '+',
              beginningY,
              ' "',
              outputFile,'"'))

将裁剪图像并将其保存到outputFile

此处sizeXsizeY是裁剪图片的所需尺寸,beginningXbeginningY指定图片上裁剪网站的左上角。