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:默认0
band.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();
}
}
}