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

如何使用R语言将.tif图像列表批量转换为.jpg格式?

R语言批量将TIFF文件转换为JPG格式

先修正原代码里的几个关键问题:

  • 原代码导入了jpeg和tiff包但未实际使用,反而遗漏了核心依赖raster包的加载
  • 匹配.tif文件时,pattern = ".tif"的写法会匹配任意字符结尾为tif的文件,需用正则转义确保只匹配后缀为.tif的文件
  • JPG是8位图像,要求像素值在0-255区间内,直接写入原始栅格数据易出现值异常,需先做归一化处理

以下是修正后的可运行代码:

# 加载处理栅格所需的核心包
library(raster)

# 列出指定目录下的所有.tif文件(精准匹配后缀)
AET_files <- list.files(
  path = "./disalexi_ETm_OK_2016_2022",
  full.names = TRUE,
  pattern = "\\.tif$",
  ignore.case = TRUE # 可选:兼容.TIF等大小写不同的后缀
)

# 生成对应的JPG输出路径
output_paths <- gsub("\\.tif$", ".jpg", AET_files, ignore.case = TRUE)

# 批量循环转换文件
for (i in seq_along(AET_files)) {
  # 读取单张TIFF栅格
  r <- raster(AET_files[i])
  
  # 将栅格值归一化到0-255(JPG要求的8位整数范围)
  r_norm <- (r - minValue(r)) / (maxValue(r) - minValue(r)) * 255
  r_norm <- round(r_norm) # 转为整数类型
  
  # 写入JPG文件,允许覆盖已存在的文件
  writeRaster(r_norm, output_paths[i], format = "JPG", overwrite = TRUE)
}

补充说明:

  • 若你的TIFF文件本身已是0-255的整数类型,可直接跳过归一化步骤
  • overwrite = TRUE参数用于覆盖已存在的JPG文件,可根据需求移除
  • 如需自定义颜色映射,可使用colorRampPalette生成调色板,再通过writeRaster的col参数指定

内容的提问来源于stack exchange,提问作者Sumanta Chatterjee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:25:14