public RasterCommentMetadata ReadComment(string fileName,int pageNumber,RasterCommentMetadataType type)
- (nullable LTRasterCommentMetadata *)readCommentFromFile:(NSString *)filepageNumber:(NSInteger)pageNumbertype:(LTRasterCommentMetadataType)typeerror:(NSError **)error
public:RasterCommentMetadata^ ReadComment(String^ fileName,int pageNumber,RasterCommentMetadataType type)
def ReadComment(self,fileName,pageNumber,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;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 TIFDebug.WriteLine("Converting the source file to TIF");codecs.Convert(srcFileName, destFileName, RasterImageFormat.Tif, 0, 0, 24, null);// Add the artist commentRasterCommentMetadata 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(destFileName, 1, writeComment);// Read the comment backRasterCommentMetadata readComment = codecs.ReadComment(destFileName, 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 passIList<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);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(destFileName, 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(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:Debug.WriteLine(comment.ToAscii());break;case RasterCommentMetadataDataType.Byte:byteData = comment.ToByte();for (int i = 0; i < byteData.Length; i++)Console.Write("{0:X} ", byteData[i]);Debug.WriteLine(" ");break;case RasterCommentMetadataDataType.Int16:shortData = comment.ToInt16();for (int i = 0; i < shortData.Length; i++)Console.Write("{0:X} ", shortData[i]);Debug.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);Debug.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);Debug.WriteLine(" ");break;}}}// Clean upcodecs.Dispose();}static class LEAD_VARS{public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";}
import java.io.*;import java.net.*;import java.nio.file.Paths;import java.util.*;import java.time.Instant;import java.time.Duration;import org.junit.*;import org.junit.runner.JUnitCore;import org.junit.runner.Result;import org.junit.runner.notification.Failure;import static org.junit.Assert.*;import leadtools.*;import leadtools.codecs.*;import leadtools.codecs.RasterCodecs.FeedCallbackThunk;import leadtools.drawing.internal.*;import leadtools.imageprocessing.*;import leadtools.imageprocessing.color.ChangeIntensityCommand;import leadtools.svg.*;public void commentsExample() throws IOException {final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images";RasterCodecs codecs = new RasterCodecs();String srcFileName = combine(LEAD_VARS_IMAGES_DIR, "Image1.cmp");String destFileName = combine(LEAD_VARS_IMAGES_DIR, "Image1_Comments.tif");// Convert the source file to TIFSystem.out.println("Converting the source file to TIF");codecs.convert(srcFileName, destFileName, RasterImageFormat.TIF, 0, 0, 24, null);// Add the artist commentRasterCommentMetadata writeComment = new RasterCommentMetadata();writeComment.setType(RasterCommentMetadataType.ARTIST);writeComment.fromAscii("LEADTOOLS");System.out.println("Writing the following comment:");System.out.printf(" Type:%s, Data:%s%n", writeComment.getType(), writeComment.toAscii());ILeadStream destFileStream = LeadStreamFactory.create(destFileName);codecs.writeComment(destFileStream, 1, writeComment);// Read the comment backRasterCommentMetadata readComment = codecs.readComment(destFileStream, 1, RasterCommentMetadataType.ARTIST);System.out.println("The following comment has been read:");System.out.printf(" Type:%s, Data:%s%n", readComment.getType(), readComment.toAscii());// Write a few comments to the file in one passRasterCollection<RasterCommentMetadata> comments = new RasterCollection<RasterCommentMetadata>();writeComment = new RasterCommentMetadata();writeComment.setType(RasterCommentMetadataType.ARTIST);writeComment.fromAscii("LEADTOOLS Again");comments.add(writeComment);writeComment = new RasterCommentMetadata();writeComment.setType(RasterCommentMetadataType.COPYRIGHT);writeComment.fromAscii("(c) 2006");comments.add(writeComment);System.out.println("Writing the following comments to the file:");for (RasterCommentMetadata comment : comments)System.out.printf(" Type:%s, Data:%s%n", comment.getType(), comment.toAscii());codecs.writeComments(destFileStream, 1, comments);// Now get all the comments in the file and show them:System.out.println("Reading all comments from the file:");RasterCommentMetadataType[] tifComments = {RasterCommentMetadataType.ARTIST,RasterCommentMetadataType.COPYRIGHT,RasterCommentMetadataType.DATE_TIME,RasterCommentMetadataType.DESCRIPTION,RasterCommentMetadataType.HOST_COMPUTER,RasterCommentMetadataType.MAKE,RasterCommentMetadataType.MODEL,RasterCommentMetadataType.NAME_OF_DOCUMENT,RasterCommentMetadataType.NAME_OF_PAGE,RasterCommentMetadataType.SOFTWARE,};for (RasterCommentMetadataType tifComment : tifComments) {RasterCommentMetadata comment = codecs.readComment(destFileStream, 1, tifComment);if (comment != null) {System.out.printf("Found comment, Type:%s, Data:%n", comment.getType());RasterCommentMetadataDataType dataType = RasterCommentMetadata.getDataType(comment.getType());byte[] byteData;short[] shortData;RasterMetadataRational[] rationalData;RasterMetadataURational[] urationalData;switch (dataType) {case ASCII:System.out.println(comment.toAscii());break;case BYTE:byteData = comment.toByte();for (int i = 0; i < byteData.length; i++)System.out.println(byteData[i]);System.out.println(" ");break;case INT_16:shortData = comment.toInt16();for (int i = 0; i < shortData.length; i++)System.out.println(shortData[i]);System.out.println(" ");break;case RATIONAL:rationalData = comment.toRational();for (int i = 0; i < rationalData.length; i++)System.out.println((double) rationalData[i].getNumerator() / rationalData[i].getDenominator());System.out.println(" ");break;case URATIONAL:urationalData = comment.toURational();for (int i = 0; i < urationalData.length; i++)System.out.println(urationalData[i].getNumerator() / urationalData[i].getDenominator());System.out.println(" ");break;}assertTrue("dataType is not ASCII, BYTE, INT_16, RATIONAL, or URATIONAL",dataType == RasterCommentMetadataDataType.ASCII|| dataType == RasterCommentMetadataDataType.BYTE|| dataType == RasterCommentMetadataDataType.INT_16|| dataType == RasterCommentMetadataDataType.RATIONAL ||dataType == RasterCommentMetadataDataType.URATIONAL);}}// Clean updestFileStream.close();codecs.dispose();}
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
