我正在使用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)
答案 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
此处sizeX
和sizeY
是裁剪图片的所需尺寸,beginningX
和beginningY
指定图片上裁剪网站的左上角。