TagGetValueBytes Method (GdPictureImaging)
Returns as bytes, the value of a tag attached to a GdPicture image.
public int TagGetValueBytes(
int ,
int ,
ref byte[]
)
public function TagGetValueBytes(
: Integer;
: Integer;
var : Bytearray of
): Integer;
public function TagGetValueBytes(
: int,
: int,
: byte[]
) : int;
public: int TagGetValueBytes(
int ,
int ,
ref byte[]*
)
public:
int TagGetValueBytes(
int ,
int ,
array<byte>^%
)
'Declaration
Public Function TagGetValueBytes( _
ByVal As Integer, _
ByVal As Integer, _
ByRef () As Byte _
) As Integer
Parameters
- ImageID
- GdPicture image identifier.
- TagNo
- Must be a value between 1 and the number of tags attached to a
GdPicture image.
- Data
- Output parameter. Array where the tag value data will be stored.
Return Value
The length of the Data array.
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);
}