Parameters
- ImageID
- GdPicture image identifier.
- TagNo
- Must be a value between 1 and the number of tags attached to a GdPicture image.
Return Value
The length of the tag.
using (GdPictureImaging gdpictureImaging = new GdPictureImaging()) { int imageID = gdpictureImaging.CreateGdPictureImageFromFile("image.jpg", false); // Walk the list of tags to gather the gps coordinates. StringBuilder report = new StringBuilder(); int tagCount = gdpictureImaging.TagCount(imageID); for (int tagNo = 1; tagNo <= tagCount; tagNo++) { Tags tag = gdpictureImaging.TagGetID(imageID, tagNo); switch (tag) { case Tags.TagGpsLatitudeRef: report.Append("LatitudeRef: "); report.AppendLine(gdpictureImaging.TagGetValueString(imageID, tagNo)); break; case Tags.TagGpsLongitudeRef: report.Append("LongitudeRef: "); report.AppendLine(gdpictureImaging.TagGetValueString(imageID, tagNo)); break; case Tags.TagGpsLatitude: case Tags.TagGpsLongitude: StringBuilder coordinate = new StringBuilder(); if (gdpictureImaging.TagGetType(imageID, tagNo) == TagType.TagTypeRational) { // Read the rationals for the coordinate, usually 3 floatting values, 8 bytes per value. int dataLength = gdpictureImaging.TagGetLength(imageID, tagNo); byte[] data = new byte[dataLength]; gdpictureImaging.TagGetValueBytes(imageID, tagNo, ref data); int rationalsCount = dataLength / 8; int readIndex = 0; for (int rationalIndex = 0; rationalIndex < rationalsCount; rationalIndex++) { uint numerator = System.BitConverter.ToUInt32(data, readIndex); uint denominator = System.BitConverter.ToUInt32(data, readIndex + 4); double value = (double)numerator / (double)denominator; coordinate.Append(value.ToString()); coordinate.Append(" "); readIndex += 8; } } else { coordinate.Append(gdpictureImaging.TagGetValueString(imageID, tagNo)); } report.Append(tag.ToString() + ": "); report.AppendLine(coordinate.ToString()); break; default: break; } } gdpictureImaging.ReleaseGdPictureImage(imageID); MessageBox.Show(report.ToString(), "Coordinates", MessageBoxButtons.OK, MessageBoxIcon.Information); }