如何使用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
相关产品推荐
相关产品推荐

