1.GDAL
2.VS2022配置GDAL环境(C#)
VS2022工具–NuGet包管理器–管理解决方案的NuGet程序包,直接安装GDAL包。
并且直接用应用到当前的控制台程序中。
找一张tiff格式的图片,或者用格式转换网站:https://www.zamzar.com/.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OSGeo.GDAL;namespace GDAL_test
{internal class Program{static void Main(string[] args){//使用之前必须要配置、注册GdalConfiguration.ConfigureGdal();GdalConfiguration.ConfigureOgr();Gdal.AllRegister();string tiffFilePath = "D:\\Users\\59723\\Desktop\\su7.tiff";// Open函数返回了Dataset类型的对象,相当于实例化Dataset dataset = Gdal.Open(tiffFilePath, Access.GA_ReadOnly);if(dataset == null ) {Console.WriteLine("无法打开文件");return; }// 获取图像信息int rasterCount = dataset.RasterCount;int width = dataset.RasterXSize;int height = dataset.RasterYSize;Console.WriteLine($"宽度:{width},高度:{height},波段数:{rasterCount}");// 读取第一个波段Band band = dataset.GetRasterBand(1);if( band == null ){Console.WriteLine("无法读取波段");return ;}// 这个地方被坑了好久,新版本的ComputeRasterMinMax(double[] argout, int approx_ok),已经没有out入参关键字了double[] minMax = { 0, 0 };band.ComputeRasterMinMax(minMax, 0);Console.WriteLine($"最小值: {minMax[0]}, 最大值: {minMax[1]}");// 读取波段数据// 在堆区开辟了一个float[]类型的数组变量,大小为width * height图片像素float[] rasterData = new float[width * height];// 参数1-2:左上角位置,参数3-4:目标区域大小,参数5:接收容器,参数6-7:容器的宽高,参数8-9:默认0band.ReadRaster(0, 0, width, height, rasterData, width, height, 0, 0);// 处理波段数据 (例如,打印前10个像素值)for (int i = 0; i < 10; i++){Console.WriteLine($"像素值[{i}]: {rasterData[i]}");}dataset.Dispose();Console.ReadKey();}}
}