Gets a comment field from a file.
public RasterCommentMetadata ReadComment(
string fileName,
int pageNumber,
RasterCommentMetadataType type
)
Public Overloads Function ReadComment( _
ByVal fileName As String, _
ByVal pageNumber As Integer, _
ByVal type As RasterCommentMetadataType _
) As RasterCommentMetadata
- (nullable LTRasterCommentMetadata *)readCommentFromFile:(NSString *)file
pageNumber:(NSInteger)pageNumber
type:(LTRasterCommentMetadataType)type
error:(NSError **)error
public:
RasterCommentMetadata^ ReadComment(
String^ fileName,
int pageNumber,
RasterCommentMetadataType type
)
fileName
A String containing the input file name.
pageNumber
1-based index of the page from which to read the comment.
type
The type of comment. Refer to Types of File Comments.
A RasterCommentMetadata object containing the comment field information. If no such comment is found in the file, this method will return a null reference.
Some file formats can contain comments, and some cannot, and each file format has its own set of comment types. When you save a file, the comments in the RasterImage object can be saved in the file. The index into the array (specified using a constant) determines the type of comment.
You can use CommentsSupported to determine whether a certain file format supports tags.
To read all the comments stored in a file, use ReadComments.
This example demonstrates all of the methods related to comments for TIFF files. It saves a few comments to a file before loading them back
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Color;
using Leadtools.Svg;
using LeadtoolsExamples.Common;
public void CommentsExample()
{
RasterCodecs codecs = new RasterCodecs();
string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp");
string destFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1_Comments.tif");
// Convert the source file to TIF
Console.WriteLine("Converting the source file to TIF");
codecs.Convert(srcFileName, destFileName, RasterImageFormat.Tif, 0, 0, 24, null);
// Add the artist comment
RasterCommentMetadata writeComment = new RasterCommentMetadata();
writeComment.Type = RasterCommentMetadataType.Artist;
writeComment.FromAscii("LEADTOOLS");
Console.WriteLine("Writing the following comment:");
Console.WriteLine(" Type:{0}, Data:{1}", writeComment.Type, writeComment.ToAscii());
codecs.WriteComment(destFileName, 1, writeComment);
// Read the comment back
RasterCommentMetadata readComment = codecs.ReadComment(destFileName, 1, RasterCommentMetadataType.Artist);
Console.WriteLine("The following comment has been read:");
Console.WriteLine(" Type:{0}, Data:{1}", readComment.Type, readComment.ToAscii());
// Write a few comments to the file in one pass
IList<RasterCommentMetadata> comments = new List<RasterCommentMetadata>();
writeComment = new RasterCommentMetadata();
writeComment.Type = RasterCommentMetadataType.Artist;
writeComment.FromAscii("LEADTOOLS Again");
comments.Add(writeComment);
writeComment = new RasterCommentMetadata();
writeComment.Type = RasterCommentMetadataType.Copyright;
writeComment.FromAscii("(c) 2006");
comments.Add(writeComment);
Console.WriteLine("Writing the following comments to the file:");
foreach (RasterCommentMetadata comment in comments)
Console.WriteLine(" Type:{0}, Data:{1}", comment.Type, comment.ToAscii());
codecs.WriteComments(destFileName, 1, comments);
// Now get all the comments in the file and show them:
Console.WriteLine("Reading all comments from the file:");
RasterCommentMetadataType[] tifComments =
{
RasterCommentMetadataType.Artist,
RasterCommentMetadataType.Copyright,
RasterCommentMetadataType.DateTime,
RasterCommentMetadataType.Description,
RasterCommentMetadataType.HostComputer,
RasterCommentMetadataType.Make,
RasterCommentMetadataType.Model,
RasterCommentMetadataType.NameOfDocument,
RasterCommentMetadataType.NameOfPage,
RasterCommentMetadataType.Software,
};
foreach (RasterCommentMetadataType tifComment in tifComments)
{
RasterCommentMetadata comment = codecs.ReadComment(destFileName, 1, tifComment);
if (comment != null)
{
Console.Write("Found comment, Type:{0}, Data:", comment.Type);
RasterCommentMetadataDataType dataType = RasterCommentMetadata.GetDataType(comment.Type);
byte[] byteData;
short[] shortData;
RasterMetadataRational[] rationalData;
RasterMetadataURational[] urationalData;
switch (dataType)
{
case RasterCommentMetadataDataType.Ascii:
Console.WriteLine(comment.ToAscii());
break;
case RasterCommentMetadataDataType.Byte:
byteData = comment.ToByte();
for (int i = 0; i < byteData.Length; i++)
Console.Write("{0:X} ", byteData[i]);
Console.WriteLine();
break;
case RasterCommentMetadataDataType.Int16:
shortData = comment.ToInt16();
for (int i = 0; i < shortData.Length; i++)
Console.Write("{0:X} ", shortData[i]);
Console.WriteLine();
break;
case RasterCommentMetadataDataType.Rational:
rationalData = comment.ToRational();
for (int i = 0; i < rationalData.Length; i++)
Console.Write(@"{0}/{1) ", rationalData[i].Numerator, rationalData[i].Denominator);
Console.WriteLine();
break;
case RasterCommentMetadataDataType.URational:
urationalData = comment.ToURational();
for (int i = 0; i < urationalData.Length; i++)
Console.Write(@"{0}/{1) ", urationalData[i].Numerator, urationalData[i].Denominator);
Console.WriteLine();
break;
}
}
}
// Clean up
codecs.Dispose();
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageProcessing
Imports Leadtools.ImageProcessing.Color
Imports Leadtools.Drawing
Imports Leadtools.Svg
Public Sub CommentsExample()
Dim codecs As RasterCodecs = New RasterCodecs()
Dim srcFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp")
Dim destFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Image1_Comments.tif")
' Convert the source file to TIF
Console.WriteLine("Converting the source file to TIF")
codecs.Convert(srcFileName, destFileName, RasterImageFormat.Tif, 0, 0, 24, Nothing)
' Add the artist comment
Dim writeComment As RasterCommentMetadata = New RasterCommentMetadata()
writeComment.Type = RasterCommentMetadataType.Artist
writeComment.FromAscii("LEADTOOLS")
Console.WriteLine("Writing the following comment:")
Console.WriteLine(" Type:{0}, Data:{1}", writeComment.Type, writeComment.ToAscii())
codecs.WriteComment(destFileName, 1, writeComment)
' Read the comment back
Dim readComment As RasterCommentMetadata = codecs.ReadComment(destFileName, 1, RasterCommentMetadataType.Artist)
Console.WriteLine("The following comment has been read:")
Console.WriteLine(" Type:{0}, Data:{1}", readComment.Type, readComment.ToAscii())
' Write a few comments to the file in one pass
Dim comments As IList(Of RasterCommentMetadata) = New List(Of RasterCommentMetadata)()
writeComment = New RasterCommentMetadata()
writeComment.Type = RasterCommentMetadataType.Artist
writeComment.FromAscii("LEADTOOLS Again")
comments.Add(writeComment)
writeComment = New RasterCommentMetadata()
writeComment.Type = RasterCommentMetadataType.Copyright
writeComment.FromAscii("(c) 2006")
comments.Add(writeComment)
Console.WriteLine("Writing the following comments to the file:")
For Each comment As RasterCommentMetadata In comments
Console.WriteLine(" Type:{0}, Data:{1}", comment.Type, comment.ToAscii())
Next comment
codecs.WriteComments(destFileName, 1, comments)
' Now get all the comments in the file and show them:
Console.WriteLine("Reading all comments from the file:")
Dim tifComments As RasterCommentMetadataType() =
{
RasterCommentMetadataType.Artist,
RasterCommentMetadataType.Copyright,
RasterCommentMetadataType.DateTime,
RasterCommentMetadataType.Description,
RasterCommentMetadataType.HostComputer,
RasterCommentMetadataType.Make,
RasterCommentMetadataType.Model,
RasterCommentMetadataType.NameOfDocument,
RasterCommentMetadataType.NameOfPage,
RasterCommentMetadataType.Software
}
For Each tifComment As RasterCommentMetadataType In tifComments
Dim comment As RasterCommentMetadata = codecs.ReadComment(destFileName, 1, tifComment)
If Not comment Is Nothing Then
Console.Write("Found comment, Type:{0}, Data:", comment.Type)
Dim dataType As RasterCommentMetadataDataType = RasterCommentMetadata.GetDataType(comment.Type)
Dim byteData As Byte()
Dim shortData As Short()
Dim rationalData As RasterMetadataRational()
Dim urationalData As RasterMetadataURational()
Select Case dataType
Case RasterCommentMetadataDataType.Ascii
Console.WriteLine(comment.ToAscii())
Case RasterCommentMetadataDataType.Byte
byteData = comment.ToByte()
Dim i As Integer = 0
Do While i < byteData.Length
Console.Write("{0:X} ", byteData(i))
i += 1
Loop
Console.WriteLine()
Case RasterCommentMetadataDataType.Int16
shortData = comment.ToInt16()
Dim i As Integer = 0
Do While i < shortData.Length
Console.Write("{0:X} ", shortData(i))
i += 1
Loop
Console.WriteLine()
Case RasterCommentMetadataDataType.Rational
rationalData = comment.ToRational()
Dim i As Integer = 0
Do While i < rationalData.Length
Console.Write("{0}/{1) ", rationalData(i).Numerator, rationalData(i).Denominator)
i += 1
Loop
Console.WriteLine()
Case RasterCommentMetadataDataType.URational
urationalData = comment.ToURational()
Dim i As Integer = 0
Do While i < urationalData.Length
Console.Write("{0}/{1) ", urationalData(i).Numerator, urationalData(i).Denominator)
i += 1
Loop
Console.WriteLine()
End Select
End If
Next tifComment
' Clean up
codecs.Dispose()
End Sub
Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
c#[Silverlight C# Example]
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Examples;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Color;
using Leadtools.Windows.Media;
public void CommentsExample(Stream inStreamCmp, Stream outStreamTif)
{
RasterCodecs codecs = new RasterCodecs();
// Convert the source file to TIF
Debug.WriteLine("Converting the source file to TIF");
codecs.Convert(inStreamCmp, outStreamTif, RasterImageFormat.Tif, 0, 0, 24, null);
// Add the artist comment
RasterCommentMetadata writeComment = new RasterCommentMetadata();
writeComment.Type = RasterCommentMetadataType.Artist;
writeComment.FromAscii("LEADTOOLS");
Debug.WriteLine("Writing the following comment:");
Debug.WriteLine(" Type:{0}, Data:{1}", writeComment.Type, writeComment.ToAscii());
codecs.WriteComment(outStreamTif, 1, writeComment);
// Read the comment back
RasterCommentMetadata readComment = codecs.ReadComment(outStreamTif, 1, RasterCommentMetadataType.Artist);
Debug.WriteLine("The following comment has been read:");
Debug.WriteLine(" Type:{0}, Data:{1}", readComment.Type, readComment.ToAscii());
// Write a few comments to the file in one pass
RasterCollection<RasterCommentMetadata> comments = new RasterCollection<RasterCommentMetadata>();
writeComment = new RasterCommentMetadata();
writeComment.Type = RasterCommentMetadataType.Artist;
writeComment.FromAscii("LEADTOOLS Again");
comments.Add(writeComment);
writeComment = new RasterCommentMetadata();
writeComment.Type = RasterCommentMetadataType.Copyright;
writeComment.FromAscii("(c) 2006");
comments.Add(writeComment);
Debug.WriteLine("Writing the following comments to the file:");
foreach (RasterCommentMetadata comment in comments)
Debug.WriteLine(" Type:{0}, Data:{1}", comment.Type, comment.ToAscii());
codecs.WriteComments(outStreamTif, 1, comments);
// Now get all the comments in the file and show them:
Debug.WriteLine("Reading all comments from the file:");
RasterCommentMetadataType[] tifComments =
{
RasterCommentMetadataType.Artist,
RasterCommentMetadataType.Copyright,
RasterCommentMetadataType.DateTime,
RasterCommentMetadataType.Description,
RasterCommentMetadataType.HostComputer,
RasterCommentMetadataType.Make,
RasterCommentMetadataType.Model,
RasterCommentMetadataType.NameOfDocument,
RasterCommentMetadataType.NameOfPage,
RasterCommentMetadataType.Software,
};
foreach (RasterCommentMetadataType tifComment in tifComments)
{
RasterCommentMetadata comment = codecs.ReadComment(outStreamTif, 1, tifComment);
if (comment != null)
{
Debug.WriteLine("Found comment, Type:{0}, Data:", comment.Type);
RasterCommentMetadataDataType dataType = RasterCommentMetadata.GetDataType(comment.Type);
byte[] byteData;
short[] shortData;
RasterMetadataRational[] rationalData;
RasterMetadataURational[] urationalData;
switch (dataType)
{
case RasterCommentMetadataDataType.Ascii:
Debug.WriteLine(comment.ToAscii());
break;
case RasterCommentMetadataDataType.Byte:
byteData = comment.ToByte();
for (int i = 0; i < byteData.Length; i++)
Debug.WriteLine("{0:X} ", byteData[i]);
Debug.WriteLine("");
break;
case RasterCommentMetadataDataType.Int16:
shortData = comment.ToInt16();
for (int i = 0; i < shortData.Length; i++)
Debug.WriteLine("{0:X} ", shortData[i]);
Debug.WriteLine("");
break;
case RasterCommentMetadataDataType.Rational:
rationalData = comment.ToRational();
for (int i = 0; i < rationalData.Length; i++)
Debug.WriteLine(@"{0}/{1) ", rationalData[i].Numerator, rationalData[i].Denominator);
Debug.WriteLine("");
break;
case RasterCommentMetadataDataType.URational:
urationalData = comment.ToURational();
for (int i = 0; i < urationalData.Length; i++)
Debug.WriteLine(@"{0}/{1) ", urationalData[i].Numerator, urationalData[i].Denominator);
Debug.WriteLine("");
break;
}
}
}
}
vb[Silverlight VB Example]
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageProcessing
Imports Leadtools.ImageProcessing.Color
Imports Leadtools.Windows.Media
Public Sub CommentsExample(ByVal inStreamCmp As Stream, ByVal outStreamTif As Stream)
Dim codecs As RasterCodecs = New RasterCodecs()
' Convert the source file to TIF
Debug.WriteLine("Converting the source file to TIF")
codecs.Convert(inStreamCmp, outStreamTif, RasterImageFormat.Tif, 0, 0, 24, Nothing)
' Add the artist comment
Dim writeComment As RasterCommentMetadata = New RasterCommentMetadata()
writeComment.Type = RasterCommentMetadataType.Artist
writeComment.FromAscii("LEADTOOLS")
Debug.WriteLine("Writing the following comment:")
Debug.WriteLine(" Type:{0}, Data:{1}", writeComment.Type, writeComment.ToAscii())
codecs.WriteComment(outStreamTif, 1, writeComment)
' Read the comment back
Dim readComment As RasterCommentMetadata = codecs.ReadComment(outStreamTif, 1, RasterCommentMetadataType.Artist)
Debug.WriteLine("The following comment has been read:")
Debug.WriteLine(" Type:{0}, Data:{1}", readComment.Type, readComment.ToAscii())
' Write a few comments to the file in one pass
Dim comments As RasterCollection(Of RasterCommentMetadata) = New RasterCollection(Of RasterCommentMetadata)()
writeComment = New RasterCommentMetadata()
writeComment.Type = RasterCommentMetadataType.Artist
writeComment.FromAscii("LEADTOOLS Again")
comments.Add(writeComment)
writeComment = New RasterCommentMetadata()
writeComment.Type = RasterCommentMetadataType.Copyright
writeComment.FromAscii("(c) 2006")
comments.Add(writeComment)
Debug.WriteLine("Writing the following comments to the file:")
For Each comment As RasterCommentMetadata In comments
Debug.WriteLine(" Type:{0}, Data:{1}", comment.Type, comment.ToAscii())
Next comment
codecs.WriteComments(outStreamTif, 1, comments)
' Now get all the comments in the file and show them:
Debug.WriteLine("Reading all comments from the file:")
Dim tifComments As RasterCommentMetadataType() = {RasterCommentMetadataType.Artist, RasterCommentMetadataType.Copyright, RasterCommentMetadataType.DateTime, RasterCommentMetadataType.Description,
RasterCommentMetadataType.HostComputer, RasterCommentMetadataType.Make, RasterCommentMetadataType.Model, RasterCommentMetadataType.NameOfDocument, RasterCommentMetadataType.NameOfPage, RasterCommentMetadataType.Software}
For Each tifComment As RasterCommentMetadataType In tifComments
Dim comment As RasterCommentMetadata = codecs.ReadComment(outStreamTif, 1, tifComment)
If Not comment Is Nothing Then
Debug.WriteLine("Found comment, Type:{0}, Data:", comment.Type)
Dim dataType As RasterCommentMetadataDataType = RasterCommentMetadata.GetDataType(comment.Type)
Dim byteData As Byte()
Dim shortData As Short()
Dim rationalData As RasterMetadataRational()
Dim urationalData As RasterMetadataURational()
Select Case dataType
Case RasterCommentMetadataDataType.Ascii
Debug.WriteLine(comment.ToAscii())
Case RasterCommentMetadataDataType.Byte
byteData = comment.ToByte()
Dim i As Integer = 0
Do While i < byteData.Length
Debug.WriteLine("{0:X} ", byteData(i))
i += 1
Loop
Debug.WriteLine("")
Case RasterCommentMetadataDataType.Int16
shortData = comment.ToInt16()
Dim i As Integer = 0
Do While i < shortData.Length
Debug.WriteLine("{0:X} ", shortData(i))
i += 1
Loop
Debug.WriteLine("")
Case RasterCommentMetadataDataType.Rational
rationalData = comment.ToRational()
Dim i As Integer = 0
Do While i < rationalData.Length
Debug.WriteLine("{0}/{1) ", rationalData(i).Numerator, rationalData(i).Denominator)
i += 1
Loop
Debug.WriteLine("")
Case RasterCommentMetadataDataType.URational
urationalData = comment.ToURational()
Dim i As Integer = 0
Do While i < urationalData.Length
Debug.WriteLine("{0}/{1) ", urationalData(i).Numerator, urationalData(i).Denominator)
i += 1
Loop
Debug.WriteLine("")
End Select
End If
Next tifComment
End Sub
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document