GdPicture.NET.14
GdPicture14 Namespace / GdPictureImaging Class / TagGetLength Method
GdPicture image identifier.
Must be a value between 1 and the number of tags attached to a GdPicture image.
Example





In This Topic
TagGetLength Method (GdPictureImaging)
In This Topic
Returns the length in bytes of a tag attached to a GdPicture image.
Syntax
'Declaration
 
Public Function TagGetLength( _
   ByVal ImageID As Integer, _
   ByVal TagNo As Integer _
) As Integer
public int TagGetLength( 
   int ImageID,
   int TagNo
)
public function TagGetLength( 
    ImageID: Integer;
    TagNo: Integer
): Integer; 
public function TagGetLength( 
   ImageID : int,
   TagNo : int
) : int;
public: int TagGetLength( 
   int ImageID,
   int TagNo
) 
public:
int TagGetLength( 
   int ImageID,
   int TagNo
) 

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.
Example
Reading gps coordinates from the tags of a jpeg image.
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);
}
See Also