gridExtra::read.tiff 和缺少分辨率信息

gridExtra::read.tiff and missing resolution info

为了 assemble 多面板数字我正在编写一个函数,它使用 gtable 来很好地自动排列它们。我正在实现将 *.tif 图形添加为面板的功能,并且 运行 遇到读取文件后确定分辨率的问题。

# Plot something
require(ggplot2)
p <- ggplot(mtcars, aes(wt, mpg))
p <- p + geom_point()

# Save as tif
tmpFile <- tempfile(fileext = ".tiff")
ggsave(
  filename = tmpFile,
  plot = p, 
  width = 65, 
  height = 60, 
  units = "mm", 
  dpi = 300)

# Re-read
require(gridExtra)
require(pixmap)
parsedTif <- read.tiff(tmpFile)

发出了一个警告,这是相关的,但我无法放置:

Warning message:
In rep(cellres, length = 2) : 'x' is NULL so the result will be NULL

当我这样做时,parsedTif@size 给出了以像素为单位的尺寸,但 parsedTif@cellres 等于 c(1, 1)。在这个构造的案例中,我知道图像应该具有的实际测量值,因此可以像这样重建分辨率,

dim <- parsedTif@size
size <- unit(x = dim/11.8, units = "mm")

但这并不为人所知。我如何从 gridExtra::read.tiff 解析的对象中获得分辨率,或者这只是 ggsave 产生的问题?

经过更多谷歌搜索后,观察到的行为似乎是 pixmap 包中的错误(参见 here 另一个实例)。切换到 tiff::readTIFF 可解决问题 - 正确报告分辨率。 rtiff::readTiff 概括了 gridExtra::read.tiff 的上述行为,因此也无法使用。