You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 13:32:08