Extends the
RasterMetadata class to provide functionality for dealing with comment metadata stored within various image file formats.
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() RasterCodecs.Startup() Dim codecs As RasterCodecs = New RasterCodecs() codecs.ThrowExceptionsOnInvalidImages = True
Dim srcFileName As String = LeadtoolsExamples.Common.ImagesPath.Path + "Image1.cmp" Dim destFileName As String = LeadtoolsExamples.Common.ImagesPath.Path + "Image1_comments.tif"
Dim image As RasterImage = codecs.Load(srcFileName) codecs.Save(image, destFileName, RasterImageFormat.Tif, 24)
image.Dispose()
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)
comment = codecs.ReadComment(destFileName, 1, RasterCommentMetadataType.Artist) Dim artistNameRead As String = comment.ToAscii() Console.WriteLine("Artist: {0}", artistNameRead) Debug.Assert(artistNameRead = artistNameWrite)
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
RasterCodecs.Shutdown() End Sub |
C# |
Copy Code |
public void RasterCommentMetadataExample() { RasterCodecs.Startup(); RasterCodecs codecs = new RasterCodecs(); codecs.ThrowExceptionsOnInvalidImages = true; string srcFileName = LeadtoolsExamples.Common.ImagesPath.Path + "Image1.cmp"; string destFileName = LeadtoolsExamples.Common.ImagesPath.Path + "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); } // Cleanup RasterCodecs.Shutdown(); } |
Remarks
Inheritance Hierarchy
Requirements
Target Platforms: Microsoft .NET Framework 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family
See Also