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
Your email has been sent to support! Someone should be in touch! If your matter is urgent please come back into chat.
Chat Hours:
Monday - Friday, 8:30am to 6pm ET
Thank you for your feedback!
Please fill out the form again to start a new chat.
All agents are currently offline.
Chat Hours:
Monday - Friday
8:30AM - 6PM EST
To contact us please fill out this form and we will contact you via email.