[SerializableAttribute()]public class RasterTagMetadata : RasterMetadata
@interface LTRasterTagMetadata : LTRasterMetadata public class RasterTagMetadataextends RasterMetadataimplements java.io.Serializable
[SerializableAttribute()]public ref class RasterTagMetadata : public RasterMetadata
class RasterTagMetadata(RasterMetadata): 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 [email protected].
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.
This example will save then load some tags to/from a tif file.
using Leadtools;using Leadtools.Codecs;public void RasterTagMetadataExample(){RasterCodecs codecs = new RasterCodecs();codecs.ThrowExceptionsOnInvalidImages = true;string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp");string destFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1_tags.tif");// Load the imageRasterImage image = codecs.Load(srcFileName);// add the tagsconst int tagSoftware = 0x8001;RasterTagMetadata tag;// Asciitag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.Ascii;tag.FromAscii("Test String");image.Tags.Add(tag);// Bytetag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.Byte;byte[] byteArray = new byte[1];byteArray[0] = 10;tag.FromByte(byteArray);image.Tags.Add(tag);// SBytetag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.SByte;sbyte[] sbyteArray = new sbyte[1];sbyteArray[0] = -45;tag.FromSByte(sbyteArray);image.Tags.Add(tag);// Int16tag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.Int16;short[] shortArray = new short[1];shortArray[0] = 64;tag.FromInt16(shortArray);image.Tags.Add(tag);// Uint16tag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.UInt16;ushort[] uint16Array = new ushort[1];uint16Array[0] = 50;tag.FromUInt16(uint16Array);image.Tags.Add(tag);// Int32tag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.Int32;int[] intArray = new int[1];intArray[0] = -1326;tag.FromInt32(intArray);image.Tags.Add(tag);// Uint32tag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.UInt32;uint[] uintArray = new uint[1];uintArray[0] = 1326;tag.FromUInt32(uintArray);image.Tags.Add(tag);// singletag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.Single;float[] singleArray = new float[1];singleArray[0] = 4.53f;tag.FromSingle(singleArray);image.Tags.Add(tag);// Doubletag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.Double;double[] doubleArray = new double[1];doubleArray[0] = 7.1;tag.FromDouble(doubleArray);image.Tags.Add(tag);// Rationaltag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.Rational;RasterMetadataRational[] rational = new RasterMetadataRational[1];rational[0] = new RasterMetadataRational();rational[0].Numerator = 3;rational[0].Denominator = 2;tag.FromRational(rational);image.Tags.Add(tag);// URationaltag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.URational;RasterMetadataURational[] urational = new RasterMetadataURational[1];urational[0] = new RasterMetadataURational(3, 2);tag.FromURational(urational);image.Tags.Add(tag);// Save the image and its tags to the destination tiff filecodecs.Options.Save.Tags = true;codecs.Save(image, destFileName, RasterImageFormat.Tif, 1);// Enumerate the tags from the filecodecs.TagFound += new EventHandler<CodecsEnumTagsEventArgs>(codecs_TagFound);codecs.EnumTags(destFileName, 1);// clean upimage.Dispose();codecs.Dispose();}void codecs_TagFound(object sender, CodecsEnumTagsEventArgs e){Console.WriteLine("Found tag id = {0}, count = {1}, type = {2}", e.Id, e.Count, e.MetadataType);}static class LEAD_VARS{public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";}
import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;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 rasterTagMetadataExample() throws FileNotFoundException {final String LEAD_VARS_ImagesDir = "C:\\LEADTOOLS23\\Resources\\Images";RasterCodecs codecs = new RasterCodecs();codecs.setThrowExceptionsOnInvalidImages(true);String srcFileName = combine(LEAD_VARS_ImagesDir, "Image1.cmp");String destFileName = combine(LEAD_VARS_ImagesDir, "Image1_tags.tif");// Load the imageRasterImage image = codecs.load(srcFileName);// Add the tagsfinal int tagSoftware = 0x8001;RasterTagMetadata tag;// Asciitag = new RasterTagMetadata();tag.setId(tagSoftware);tag.setDataType(RasterTagMetadataDataType.ASCII);tag.fromAscii("Test String");image.getTags().add(tag);// Bytetag = new RasterTagMetadata();tag.setId(tagSoftware);tag.setDataType(RasterTagMetadataDataType.BYTE);byte[] byteArray = new byte[1];byteArray[0] = 10;tag.fromByte(byteArray);image.getTags().add(tag);// SBytetag = new RasterTagMetadata();tag.setId(tagSoftware);tag.setDataType(RasterTagMetadataDataType.SBYTE);byte[] sbyteArray = new byte[1];byteArray[0] = -45;tag.fromSByte(sbyteArray);image.getTags().add(tag);// Int16tag = new RasterTagMetadata();tag.setId(tagSoftware);tag.setDataType(RasterTagMetadataDataType.INT_16);short[] shortArray = new short[1];shortArray[0] = 64;tag.fromInt16(shortArray);image.getTags().add(tag);// Uint16tag = new RasterTagMetadata();tag.setId(tagSoftware);tag.setDataType(RasterTagMetadataDataType.INT_32);int[] uint16Array = new int[1];uint16Array[0] = 4;tag.fromInt32(uint16Array);image.getTags().add(tag);// Int32tag = new RasterTagMetadata();tag.setId(tagSoftware);tag.setDataType(RasterTagMetadataDataType.INT_32);int[] intArray = new int[1];intArray[0] = -1326;tag.fromInt32(intArray);image.getTags().add(tag);// Uint32tag = new RasterTagMetadata();tag.setId(tagSoftware);tag.setDataType(RasterTagMetadataDataType.INT_32);int[] uintArray = new int[1];uintArray[0] = 1326;tag.fromInt32(uintArray);image.getTags().add(tag);// Floattag = new RasterTagMetadata();tag.setId(tagSoftware);tag.setDataType(RasterTagMetadataDataType.SINGLE);float[] singleArray = new float[1];singleArray[0] = 4.53f;tag.fromSingle(singleArray);image.getTags().add(tag);// Doubletag = new RasterTagMetadata();tag.setId(tagSoftware);tag.setDataType(RasterTagMetadataDataType.DOUBLE);double[] doubleArray = new double[1];doubleArray[0] = 7.1;tag.fromDouble(doubleArray);image.getTags().add(tag);// Rationaltag = new RasterTagMetadata();tag.setId(tagSoftware);tag.setDataType(RasterTagMetadataDataType.RATIONAL);RasterMetadataRational[] rational = new RasterMetadataRational[1];rational[0] = new RasterMetadataRational(3, 2);tag.fromRational(rational);image.getTags().add(tag);// URationaltag = new RasterTagMetadata();tag.setId(tagSoftware);tag.setDataType(RasterTagMetadataDataType.URATIONAL);RasterMetadataURational[] urational = new RasterMetadataURational[1];urational[0] = new RasterMetadataURational(3, 2);tag.fromURational(urational);image.getTags().add(tag);// Save the image and its tags to the destination tiff filecodecs.getOptions().getSave().setTags(true);codecs.save(image, destFileName, RasterImageFormat.TIF, 1);assertTrue("Image unsuccessfully saved", new File(destFileName).exists());System.out.printf("Commands run, image saved to %s", destFileName);// Enumerate the tags from the filecodecs.addTagFoundListener(new CodecsTagFoundListener() {@Overridepublic void onTagFound(CodecsEnumTagsEvent e) {System.out.printf("Found tag id = %s, count = %s, type = %s", e.getId(), e.getCount(), e.getMetadataType());}});File file = new File(destFileName);InputStream is = new FileInputStream(file);LeadStream ls = new LeadStream(is, false);codecs.enumTags(ls, 1);assertTrue("File failed to save", file.exists());System.out.println("The file exists");// clean upimage.dispose();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
