使用R语言imager包导出cimg数组为TIFF文件格式异常,如何修复?
解决imager包导出TIFF文件格式异常的问题
问题现象
使用imager包的save.image()函数将cimg数组导出为TIFF文件时,生成的文件格式异常,但加载原始图像并显示的过程正常。
解决方案
放弃使用imager的save.image(),改用tiff包的writeTIFF()函数来导出,需先将cimg对象转换为tiff包兼容的数组格式并调整维度顺序。
完整代码示例:
library(imager) library(tiff) # 加载原始TIFF图像 tifftest <- imager::load.image(file = system.file("img", "Rlogo.tiff", package="tiff")) plot(tifftest) # 将cimg对象转换为tiff包兼容的数组格式,调整维度顺序 img_array <- as.array(tifftest) # cimg维度为(x, y, channel),tiff要求(y, x, channel) img_array <- aperm(img_array, c(2, 1, 3)) # 写入TIFF文件,bits.per.sample根据原始图像设置(此处原始为8位) writeTIFF(img_array, "test.tiff", bits.per.sample = 8)
原因说明
imager包的save.image()在TIFF格式的编码或维度处理上存在兼容性问题,而tiff包是专门针对TIFF格式开发的工具,对格式标准的支持更完善。另外,cimg对象的维度顺序与tiff包要求的不一致,必须调整后才能正确导出。
内容的提问来源于stack exchange,提问作者Crops
相关产品推荐
相关产品推荐

