←Select platform

RasterCommentMetadata Class

Summary
Extends the RasterMetadata class to provide functionality for dealing with comment metadata stored within various image file formats.
Syntax
C#
Objective-C
C++/CLI
Java
Python
[SerializableAttribute()] 
public class RasterCommentMetadata : RasterMetadata 
@interface LTRasterCommentMetadata : LTRasterMetadata 
public class RasterCommentMetadata 
    extends RasterMetadata 
    implements java.io.Serializable 
[SerializableAttribute()] 
public ref class RasterCommentMetadata : public RasterMetadata  
class RasterCommentMetadata(RasterMetadata): 
Remarks

The TIFF file formats support a number of comments that are saved and loaded using predefined tags.

If the comments do not meet your needs, you can define your own tag for saving additional non-raster data in a TIFF file. For example, you may want to define a tag to save annotations.

The TIFF 6.0 Specification sets aside a range of private tags that developers can define. To avoid conflicts with files created by other developers, you can register your tag by contacting Adobe Developer Relations. The E-Mail address posted on The Unofficial TIFF Home Page is gapdevsup@adobe.com.

Some restrictions apply to this function if you use an IFD to indicate to which page to write the metadata. See the Loading And Saving Large TIFF Files topic for more information.

Example

This example will write comments of different data types to an existing tif file then read them as a test.

C#
Java
using Leadtools; 
using Leadtools.Codecs; 
 
 
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); 
	Assert.IsTrue(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); 
 
	Assert.IsTrue(rationalsRead.Length == rationalsWrite.Length); 
	for (int i = 0; i < rationalsRead.Length; i++) 
	{ 
		Assert.IsTrue(rationalsRead[i].Numerator == rationalsWrite[i].Numerator); 
		Assert.IsTrue(rationalsRead[i].Denominator == rationalsWrite[i].Denominator); 
	} 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images"; 
} 
 
import java.io.File; 
import java.io.IOException; 
 
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.*; 
 
 
public void RasterCommentMetadataExample() { 
   final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images"; 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.setThrowExceptionsOnInvalidImages(true); 
 
   String srcFileName = combine(LEAD_VARS_IMAGES_DIR, "Image1.cmp"); 
   String destFileName = combine(LEAD_VARS_IMAGES_DIR, "Image1_comments.tif"); 
   ILeadStream destFileStream = LeadStreamFactory.create(destFileName); 
 
   // 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.setType(RasterCommentMetadataType.ARTIST); 
   String artistNameWrite = "Artist name"; 
   comment.fromAscii(artistNameWrite); 
   System.out.println("Writing Artist"); 
   codecs.writeComment(destFileStream, 1, comment); 
 
   comment.setType(RasterCommentMetadataType.GPS_LATITUDE); 
   RasterMetadataRational[] rationalsWrite = new RasterMetadataRational[3]; 
   for (int i = 0; i < rationalsWrite.length; i++) 
      rationalsWrite[i] = new RasterMetadataRational(i + 3, i + 2); 
 
   comment.fromRational(rationalsWrite); 
   System.out.println("Writing GpsLatitude"); 
   codecs.writeComment(destFileStream, 1, comment); 
 
   // Now read the comments from the tif file 
 
   // read ASCII 
   comment = codecs.readComment(destFileName, 1, RasterCommentMetadataType.ARTIST); 
   String artistNameRead = comment.toAscii(); 
   System.out.printf("Artist Read: %s\n", artistNameRead); 
   System.out.printf("Artist Written: %s\n", artistNameWrite); 
   assertTrue(artistNameRead.equals(artistNameWrite)); 
 
   // read rationals 
   comment = codecs.readComment(destFileName, 1, RasterCommentMetadataType.GPS_LATITUDE); 
   RasterMetadataRational[] rationalsRead = comment.toRational(); 
 
   int size = rationalsRead.length; 
   System.out.printf("GpsLatitude: size = %d \n", size); 
   for (int i = 0; i < size; i++) 
      System.out.printf("%d/%d\n", rationalsRead[i].getNumerator(), rationalsRead[i].getDenominator()); 
 
   assertTrue(rationalsRead.length == rationalsWrite.length); 
   for (int i = 0; i < rationalsRead.length; i++) { 
      assertTrue(rationalsRead[i].getNumerator() == rationalsWrite[i].getNumerator()); 
      assertTrue(rationalsRead[i].getDenominator() == rationalsWrite[i].getDenominator()); 
   } 
} 
Requirements

Target Platforms

Help Version 23.0.2024.2.29
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.

Leadtools Assembly

Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.