C# 如何获取照片中Exif信息里GPS信息与经纬度数

C# 如何获取照片中Exif信息里GPS信息与经纬度数,第1张

/// <summary>

/// 获取中的GPS坐标

/// </summary>

/// <param name="p_路径">路径</param>

/// <returns>返回坐标纬度+经度用"+"分割 取数组中第0和1个位置的值</returns>

public String fnGPS坐标(String p_路径)

{

String s_GPS坐标 = "";

//载入

Image objImage = ImageFromFile(p_路径);

//取得所有的属性(以PropertyId做排序)

var propertyItems = objImagePropertyItemsOrderBy(x => xId);

//暂定纬度N(北纬)

char chrGPSLatitudeRef = 'N';

//暂定经度为E(东经)

char chrGPSLongitudeRef = 'E';

foreach (PropertyItem objItem in propertyItems)

{

//只取Id范围为0x0000到0x001e

if (objItemId >= 0x0000 && objItemId <= 0x001e)

{

objItemId = 0x0002;

switch (objItemId)

{

case 0x0000:

var query = from tmpb in objItemValue select tmpbToString();

string sreVersion = stringJoin("", queryToArray());

break;

case 0x0001:

chrGPSLatitudeRef = BitConverterToChar(objItemValue, 0);

break;

case 0x0002:

if (objItemValueLength == 24)

{

//degrees(将byte[0]~byte[3]转成uint, 除以byte[4]~byte[7]转成的uint)

double d = BitConverterToUInt32(objItemValue, 0) 10d / BitConverterToUInt32(objItemValue, 4);

//minutes(将byte[8]~byte[11]转成uint, 除以byte[12]~byte[15]转成的uint)

double m = BitConverterToUInt32(objItemValue, 8) 10d / BitConverterToUInt32(objItemValue, 12);

//seconds(将byte[16]~byte[19]转成uint, 除以byte[20]~byte[23]转成的uint)

double s = BitConverterToUInt32(objItemValue, 16) 10d / BitConverterToUInt32(objItemValue, 20);

//计算经纬度数值, 如果是南纬, 要乘上(-1)

double dblGPSLatitude = (((s / 60 + m) / 60) + d) (chrGPSLatitudeRefEquals('N') 1 : -1);

string strLatitude = stringFormat("{0:#} deg {1:#}' {2:#00}\" {3}", d

, m, s, chrGPSLatitudeRef);

//纬度+经度

s_GPS坐标 += dblGPSLatitude + "+";

}

break;

case 0x0003:

//透过BitConverter, 将Value转成Char('E' / 'W')

//此值在后续的Longitude计算上会用到

chrGPSLongitudeRef = BitConverterToChar(objItemValue, 0);

break;

case 0x0004:

if (objItemValueLength == 24)

{

//degrees(将byte[0]~byte[3]转成uint, 除以byte[4]~byte[7]转成的uint)

double d = BitConverterToUInt32(objItemValue, 0) 10d / BitConverterToUInt32(objItemValue, 4);

//minutes(将byte[8]~byte[11]转成uint, 除以byte[12]~byte[15]转成的uint)

double m = BitConverterToUInt32(objItemValue, 8) 10d / BitConverterToUInt32(objItemValue, 12);

//seconds(将byte[16]~byte[19]转成uint, 除以byte[20]~byte[23]转成的uint)

double s = BitConverterToUInt32(objItemValue, 16) 10d / BitConverterToUInt32(objItemValue, 20);

//计算精度的数值, 如果是西经, 要乘上(-1)

double dblGPSLongitude = (((s / 60 + m) / 60) + d) (chrGPSLongitudeRefEquals('E') 1 : -1);

}

break;

case 0x0005:

string strAltitude = BitConverterToBoolean(objItemValue, 0) "0" : "1";

break;

case 0x0006:

if (objItemValueLength == 8)

{

//将byte[0]~byte[3]转成uint, 除以byte[4]~byte[7]转成的uint

double dblAltitude = BitConverterToUInt32(objItemValue, 0) 10d / BitConverterToUInt32(objItemValue, 4);

}

break;

}

}

}

return s_GPS坐标;

}

#endregion

一般设置margin的值,如果要是放在Canvas中,可以利用CanvasTop等来改变距离Canvas各个角的位置。

WPF(Windows Presentation Foundation)是微软推出的基于Windows Vista的用户界面框架,属于NET Framework 30的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。

1、首先打开wpf系统并进入主界面。

2、其次对UIElement重写OnRender方法进行渲染的内容。

3、最后点击tackPanel1相对于grid的坐标并进行输入即可。

以上就是关于C# 如何获取照片中Exif信息里GPS信息与经纬度数全部的内容,包括:C# 如何获取照片中Exif信息里GPS信息与经纬度数、wpf中如何控制图片的位置、wpf代码中,怎么样输出stackpanel的坐标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9625265.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存