Extends the
RasterMetadata class to provide functionality for dealing with comment metadata stored within various image file formats.
Supported in Silverlight, Windows Phone 7
Object Model
Syntax
Example
This example will write comments of different data types to an existing tif file then read them as a test.
Visual Basic | Copy Code |
---|
Public Sub RasterCommentMetadataExample()
Dim codecs As RasterCodecs = New RasterCodecs()
codecs.ThrowExceptionsOnInvalidImages = True
Dim srcFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp")
Dim destFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Image1_comments.tif")
' Load the image
Dim image As RasterImage = codecs.Load(srcFileName)
codecs.Save(image, destFileName, RasterImageFormat.Tif, 24)
image.Dispose()
' Write some comments to the existing tif file
Dim comment As RasterCommentMetadata = New RasterCommentMetadata()
comment.Type = RasterCommentMetadataType.Artist
Dim artistNameWrite As String = "Artist name"
comment.FromAscii(artistNameWrite)
Console.WriteLine("Writing Artist")
codecs.WriteComment(destFileName, 1, comment)
comment.Type = RasterCommentMetadataType.GpsLatitude
Dim rationalsWrite As RasterMetadataRational() = New RasterMetadataRational(2) {}
Dim i As Integer = 0
Do While i < rationalsWrite.Length
rationalsWrite(i) = New RasterMetadataRational(i + 3, i + 2)
i += 1
Loop
comment.FromRational(rationalsWrite)
Console.WriteLine("Writing GpsLatitude")
codecs.WriteComment(destFileName, 1, comment)
' Now read the comments from the tif file
' read ASCII
comment = codecs.ReadComment(destFileName, 1, RasterCommentMetadataType.Artist)
Dim artistNameRead As String = comment.ToAscii()
Console.WriteLine("Artist: {0}", artistNameRead)
Debug.Assert(artistNameRead = artistNameWrite)
' read rationals
comment = codecs.ReadComment(destFileName, 1, RasterCommentMetadataType.GpsLatitude)
Dim rationalsRead As RasterMetadataRational() = comment.ToRational()
Dim size As Integer = rationalsRead.Length
Console.WriteLine("GpsLatitude: size = {0} ", size)
i = 0
Do While i < size
Console.WriteLine("{0}/{1}", rationalsRead(i).Numerator, rationalsRead(i).Denominator)
i += 1
Loop
Debug.Assert(rationalsRead.Length = rationalsWrite.Length)
i = 0
Do While i < rationalsRead.Length
Debug.Assert(rationalsRead(i).Numerator = rationalsWrite(i).Numerator)
Debug.Assert(rationalsRead(i).Denominator = rationalsWrite(i).Denominator)
i += 1
Loop
End Sub
Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class |
C# | Copy Code |
---|
public void RasterCommentMetadataExample()
{
RasterCodecs codecs = new RasterCodecs();
codecs.ThrowExceptionsOnInvalidImages = true;
string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp");
string destFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1_comments.tif");
// Load the image
RasterImage image = codecs.Load(srcFileName);
codecs.Save(image, destFileName, RasterImageFormat.Tif, 24);
image.Dispose();
// Write some comments to the existing tif file
RasterCommentMetadata comment = new RasterCommentMetadata();
comment.Type = RasterCommentMetadataType.Artist;
string artistNameWrite = "Artist name";
comment.FromAscii(artistNameWrite);
Console.WriteLine("Writing Artist");
codecs.WriteComment(destFileName, 1, comment);
comment.Type = RasterCommentMetadataType.GpsLatitude;
RasterMetadataRational[] rationalsWrite = new RasterMetadataRational[3];
for(int i = 0; i < rationalsWrite.Length; i++)
rationalsWrite[i] = new RasterMetadataRational(i + 3, i + 2);
comment.FromRational(rationalsWrite);
Console.WriteLine("Writing GpsLatitude");
codecs.WriteComment(destFileName, 1, comment);
// Now read the comments from the tif file
// read ASCII
comment = codecs.ReadComment(destFileName, 1, RasterCommentMetadataType.Artist);
string artistNameRead = comment.ToAscii();
Console.WriteLine("Artist: {0}", artistNameRead);
Debug.Assert(artistNameRead == artistNameWrite);
// read rationals
comment = codecs.ReadComment(destFileName, 1, RasterCommentMetadataType.GpsLatitude);
RasterMetadataRational[] rationalsRead = comment.ToRational();
int size = rationalsRead.Length;
Console.WriteLine("GpsLatitude: size = {0} ", size);
for(int i = 0; i < size; i++)
Console.WriteLine("{0}/{1}", rationalsRead[i].Numerator, rationalsRead[i].Denominator);
Debug.Assert(rationalsRead.Length == rationalsWrite.Length);
for(int i = 0; i < rationalsRead.Length; i++)
{
Debug.Assert(rationalsRead[i].Numerator == rationalsWrite[i].Numerator);
Debug.Assert(rationalsRead[i].Denominator == rationalsWrite[i].Denominator);
}
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
} |
SilverlightCSharp | Copy Code |
---|
public void RasterCommentMetadataExample(RasterImage image, Stream destStream)
{
RasterCodecs codecs = new RasterCodecs();
codecs.Save(image, destStream, RasterImageFormat.Tif, 24);
image.Dispose();
// Write some comments to the existing tif file
RasterCommentMetadata comment = new RasterCommentMetadata();
comment.Type = RasterCommentMetadataType.Artist;
string artistNameWrite = "Artist name";
comment.FromAscii(artistNameWrite);
Debug.WriteLine("Writing Artist");
codecs.WriteComment(destStream, 1, comment);
comment.Type = RasterCommentMetadataType.GpsLatitude;
RasterMetadataRational[] rationalsWrite = new RasterMetadataRational[3];
for(int i = 0; i < rationalsWrite.Length; i++)
rationalsWrite[i] = new RasterMetadataRational(i + 3, i + 2);
comment.FromRational(rationalsWrite);
Debug.WriteLine("Writing GpsLatitude");
codecs.WriteComment(destStream, 1, comment);
// Now read the comments from the tif file
// read ASCII
comment = codecs.ReadComment(destStream, 1, RasterCommentMetadataType.Artist);
string artistNameRead = comment.ToAscii();
Debug.WriteLine("Artist: {0}", artistNameRead);
Debug.Assert(artistNameRead == artistNameWrite);
// read rationals
comment = codecs.ReadComment(destStream, 1, RasterCommentMetadataType.GpsLatitude);
RasterMetadataRational[] rationalsRead = comment.ToRational();
int size = rationalsRead.Length;
Debug.WriteLine("GpsLatitude: size = {0} ", size);
for(int i = 0; i < size; i++)
Debug.WriteLine("{0}/{1}", rationalsRead[i].Numerator, rationalsRead[i].Denominator);
Debug.Assert(rationalsRead.Length == rationalsWrite.Length);
for(int i = 0; i < rationalsRead.Length; i++)
{
Debug.Assert(rationalsRead[i].Numerator == rationalsWrite[i].Numerator);
Debug.Assert(rationalsRead[i].Denominator == rationalsWrite[i].Denominator);
}
} |
SilverlightVB | Copy Code |
---|
Public Sub RasterCommentMetadataExample(ByVal image As RasterImage, ByVal destStream As Stream)
Dim codecs As RasterCodecs = New RasterCodecs()
codecs.Save(image, destStream, RasterImageFormat.Tif, 24)
image.Dispose()
' Write some comments to the existing tif file
Dim comment As RasterCommentMetadata = New RasterCommentMetadata()
comment.Type = RasterCommentMetadataType.Artist
Dim artistNameWrite As String = "Artist name"
comment.FromAscii(artistNameWrite)
Debug.WriteLine("Writing Artist")
codecs.WriteComment(destStream, 1, comment)
comment.Type = RasterCommentMetadataType.GpsLatitude
Dim rationalsWrite As RasterMetadataRational() = New RasterMetadataRational(2){}
Dim i As Integer = 0
Do While i < rationalsWrite.Length
rationalsWrite(i) = New RasterMetadataRational(i + 3, i + 2)
i += 1
Loop
comment.FromRational(rationalsWrite)
Debug.WriteLine("Writing GpsLatitude")
codecs.WriteComment(destStream, 1, comment)
' Now read the comments from the tif file
' read ASCII
comment = codecs.ReadComment(destStream, 1, RasterCommentMetadataType.Artist)
Dim artistNameRead As String = comment.ToAscii()
Debug.WriteLine("Artist: {0}", artistNameRead)
Debug.Assert(artistNameRead = artistNameWrite)
' read rationals
comment = codecs.ReadComment(destStream, 1, RasterCommentMetadataType.GpsLatitude)
Dim rationalsRead As RasterMetadataRational() = comment.ToRational()
Dim size As Integer = rationalsRead.Length
Debug.WriteLine("GpsLatitude: size = {0} ", size)
i = 0
Do While i < size
Debug.WriteLine("{0}/{1}", rationalsRead(i).Numerator, rationalsRead(i).Denominator)
i += 1
Loop
Debug.Assert(rationalsRead.Length = rationalsWrite.Length)
i = 0
Do While i < rationalsRead.Length
Debug.Assert(rationalsRead(i).Numerator = rationalsWrite(i).Numerator)
Debug.Assert(rationalsRead(i).Denominator = rationalsWrite(i).Denominator)
i += 1
Loop
End Sub |
Remarks
Inheritance Hierarchy
Requirements
Target Platforms: Silverlight, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7, MAC OS/X (Intel Only), Windows Phone 7
See Also