笔者最近需要将大量.raw后缀的多光谱图像转换为tif格式,然后再利用matlab对tif格式的图片进行处理。
然而,利用ENVI将.raw图片读入后,只能一张一张地将其另存为.tif格式。
笔者考虑在ENVI+IDL环境下用IDL语言实现批量转换图片格式,然而在网上没有搜到直接能用的代码,通过查阅ENVIRaster::Export方法的Example(https://www.harrisgeospatial.com/docs/ENVIRaster__Export.html),结合for循环,实现了批量将raw图片转换为tif图片。
IDL代码如下:
; 2017-08-21 00:00:40
; author: xiaohu
PRO ENVIRaster_Study
e = ENVI() ; Launch the application
for i = 2158, 2355 do begin ; 利用for循环实现批量转换
filepath_input = 'E:\input images\prefix_'+strcompress(string(i), /remove)+'.raw' ; 输入文件路径
raster1 = e.OpenRaster(filepath_input) ; 读入文件
filepath_output = 'E:\output images\FN'+strcompress(string(i), /remove)+'.tif' ; 输出文件路径
raster1.Export, filepath_output, 'TIFF' ; 输出为tiff格式
Print,'finished' ;打印finished,提示完成
endfor
end
上述代码中,输入文件路径为:E:\input images\,文件名为prefix_2158.raw, prefix_2159.raw,...,prefix_2355.raw,共约两百张图片。
输出路径为:E:\output images\,输出文件的文件名为FN2158.tif,FN2159.tif,...,FN2355.tif。
使用时,只需更改i值变化范围、输入文件路径、输出文件路径即可。