【发布时间】:2021-06-08 15:51:27
【问题描述】:
我目前正在尝试使用 C# 将编码为 Base64String 的 (Geo)Tiff 图像解码回原始格式,以便我可以访问 GDAL 元数据,例如数据集。
问题 1:我找不到任何关于如何将 Base64String 编码图像转换为 tiff 图像的确切解释。我发现的方法只为tiff返回null。
Tiff tiff;
String base64String = imageDataString.Replace("data:image/png;base64,", ""); // data:image/png;base64,
byte[] byteBuffer = Convert.FromBase64String(base64String);
MemoryStream ms = new MemoryStream(byteBuffer);
tiff = Tiff.ClientOpen("in-memory", "r", ms, new TiffStream());
使用 BitMiracle.LibTiff.Classic。
问题 2: 如果 tiff 图像已解码,如何将其保存到硬盘?这一步似乎是必要的,以便我可以打开图像以提取 GDAL 数据集,如下所示:
Dataset GdalRoomSet = Gdal.Open(imagePath, 0);
double[] TransformationCoefficients = new double[6];
GdalRoomSet.GetGeoTransform(TransformationCoefficients);
【问题讨论】:
-
你检查
String base64String = imageDataString.Replace("data:image/png;base64,", "");后base64String的值了吗?您写道您有一个 tiff,但数据 url 的类型为png。而要写入文件,只需将 byteBuffer 以二进制方式写入文件即可。 -
@jps 非常感谢。我完全忽略了不同的文件格式。看来我需要一种完全不同的方法。