public static void Main() { // Register the extender callback // It's a good idea to keep track of the previous tag extender (if any) so that we can call it // from our extender allowing a chain of customizations to take effect. m_parentExtender = Tiff.SetTagExtender(TagExtender); File.Copy(@"Sample Data\dummy.tif", @"Sample Data\ToBeModifed.tif", true); string existingTiffName = @"Sample Data\ToBeModifed.tif"; using (Tiff image = Tiff.Open(existingTiffName, "a")) { // we should rewind to first directory (first image) because of append mode image.SetDirectory(0); // set the custom tag string value = "<GDALMetadata>\n<Item name=\"IMG_GUID\">" + "817C0168-0688-45CD-B799-CF8C4DE9AB2B</Item>\n<Item" + " name=\"LAYER_TYPE\" sample=\"0\">athematic</Item>\n</GDALMetadata>"; image.SetField(TIFFTAG_GDAL_METADATA, value); // rewrites directory saving new tag image.CheckpointDirectory(); } // restore previous tag extender Tiff.SetTagExtender(m_parentExtender); }
public MainWindow() { InitializeComponent(); // Register the custom tag handler Tiff.TiffExtendProc extender = TagExtender; m_parentExtender = Tiff.SetTagExtender(extender); }
/// <summary> /// Constructor /// </summary> /// <param name="fileName">GeoTiff file to manage</param> public TIFFimage(string fileName) { Width = 0; Height = 0; SamplesPerPixel = 0; BitsPerSample = 0; Format = SampleFormat.VOID; FormatString = ""; OriginX = 0; OriginY = 0; PixelSizeX = 0; PixelSizeY = 0; Error = ""; m_parentExtender = Tiff.SetTagExtender(TagExtender); using (Image = Tiff.Open(fileName, "r")) { if (Image == null) { Error = $"Impossibile leggere il file {fileName}"; return; } getImageInfo(); AllTags = getAllTags(); readBuffer(); Image.Close(); } }
static void Main(string[] args) { // Register the custom tag handler Tiff.TiffExtendProc extender = TagExtender; m_parentExtender = Tiff.SetTagExtender(extender); //testAdobeJPG(); //testCRIJPG(); //testAdobeJPGEncode(); //testWriteCRIJpegIntoDNG(); testTileSizeEncode(args.Length > 0 ? args[0] : ""); }
public static void Main() { // Define an image byte[] buffer = new byte[25 * 144]; // Register the extender callback // It's a good idea to keep track of the previous tag extender (if any) so that we can call it // from our extender allowing a chain of customizations to take effect. m_parentExtender = Tiff.SetTagExtender(TagExtender); string outputFileName = writeTiffWithCustomTags(buffer); readCustomTags(outputFileName); // restore previous tag extender Tiff.SetTagExtender(m_parentExtender); }
private static void AddTag(string dir, string value) { // Register the extender callback m_parentExtender = Tiff.SetTagExtender(TagExtender); using (Tiff image = Tiff.Open(dir, "a")) { image.SetDirectory((short)(image.NumberOfDirectories() - 1)); // we should rewind to first directory (first image) because of append mode // set the custom tag image.SetField(TIFFTAG_CellTool_METADATA, value); // rewrites directory saving new tag image.CheckpointDirectory(); } // restore previous tag extender Tiff.SetTagExtender(m_parentExtender); }
public void ReadWriteCustomTags() { // Define an image byte[] buffer = new byte[25 * 144]; // Register the custom tag handler Tiff.TiffExtendProc extender = TagExtender; m_parentExtender = Tiff.SetTagExtender(extender); string outputFileName = "output.tif"; Tiff image = Tiff.Open(outputFileName, "w"); // We need to set some values for basic tags before we can add any data image.SetField(TiffTag.IMAGEWIDTH, 25 * 8); image.SetField(TiffTag.IMAGELENGTH, 144); image.SetField(TiffTag.BITSPERSAMPLE, 1); image.SetField(TiffTag.SAMPLESPERPIXEL, 1); image.SetField(TiffTag.ROWSPERSTRIP, 144); image.SetField(TiffTag.COMPRESSION, Compression.CCITTFAX4); image.SetField(TiffTag.PHOTOMETRIC, Photometric.MINISWHITE); image.SetField(TiffTag.FILLORDER, FillOrder.MSB2LSB); image.SetField(TiffTag.PLANARCONFIG, PlanarConfig.CONTIG); image.SetField(TiffTag.XRESOLUTION, 150.0); image.SetField(TiffTag.YRESOLUTION, 150.0); image.SetField(TiffTag.RESOLUTIONUNIT, ResUnit.INCH); // set custom tags string value = "Tag contents"; image.SetField(TIFFTAG_ASCIITAG, value); short[] shorts = { 263, 264 }; image.SetField(TIFFTAG_SHORTTAG, 2, shorts); int[] longs = { 117, 118 }; image.SetField(TIFFTAG_LONGTAG, 2, longs); float[] rationals = { 0.333333f, 0.444444f }; image.SetField(TIFFTAG_RATIONALTAG, 2, rationals); float[] floats = { 0.666666f, 0.777777f }; image.SetField(TIFFTAG_FLOATTAG, 2, floats); double[] doubles = { 0.1234567, 0.7654321 }; image.SetField(TIFFTAG_DOUBLETAG, 2, doubles); byte[] bytes = { 89, 90 }; image.SetField(TIFFTAG_BYTETAG, 2, bytes); int ifd_offset = 1234567890; image.SetField(TIFFTAG_IFDTAG, ifd_offset); // Write the information to the file image.WriteEncodedStrip(0, buffer, 25 * 144); // Close the file image.Dispose(); // Now open that TIFF back and read new tags image = Tiff.Open(outputFileName, "r"); FieldValue[] res = image.GetField(TIFFTAG_ASCIITAG); Assert.IsNotNull(res); Assert.AreEqual(1, res.Length); Assert.AreEqual(value, res[0].ToString()); res = image.GetField(TIFFTAG_SHORTTAG); Assert.IsNotNull(res); Assert.AreEqual(2, res.Length); Assert.AreEqual(2, res[0].ToInt()); Assert.AreEqual(shorts, res[1].ToShortArray()); res = image.GetField(TIFFTAG_LONGTAG); Assert.IsNotNull(res); Assert.AreEqual(2, res.Length); Assert.AreEqual(2, res[0].ToInt()); Assert.AreEqual(longs, res[1].ToIntArray()); res = image.GetField(TIFFTAG_RATIONALTAG); Assert.IsNotNull(res); Assert.AreEqual(2, res.Length); Assert.AreEqual(2, res[0].ToInt()); Assert.AreEqual(rationals, res[1].ToFloatArray()); res = image.GetField(TIFFTAG_FLOATTAG); Assert.IsNotNull(res); Assert.AreEqual(2, res.Length); Assert.AreEqual(2, res[0].ToInt()); Assert.AreEqual(floats, res[1].ToFloatArray()); res = image.GetField(TIFFTAG_DOUBLETAG); Assert.IsNotNull(res); Assert.AreEqual(2, res.Length); Assert.AreEqual(2, res[0].ToInt()); Assert.AreEqual(doubles, res[1].ToDoubleArray()); res = image.GetField(TIFFTAG_BYTETAG); Assert.IsNotNull(res); Assert.AreEqual(2, res.Length); Assert.AreEqual(2, res[0].ToInt()); Assert.AreEqual(bytes, res[1].ToByteArray()); res = image.GetField(TIFFTAG_IFDTAG); Assert.IsNotNull(res); Assert.AreEqual(1, res.Length); Assert.AreEqual(ifd_offset, res[0].ToInt()); image.Dispose(); Tiff.SetTagExtender(m_parentExtender); }
public void ReadWriteCustomTags() { // Define an image byte[] buffer = new byte[25 * 144]; // Register the custom tag handler Tiff.TiffExtendProc extender = TagExtender; m_parentExtender = Tiff.SetTagExtender(extender); string outputFileName = "output.tif"; Tiff image = Tiff.Open(outputFileName, "w"); // We need to set some values for basic tags before we can add any data image.SetField(TiffTag.IMAGEWIDTH, 25 * 8); image.SetField(TiffTag.IMAGELENGTH, 144); image.SetField(TiffTag.BITSPERSAMPLE, 1); image.SetField(TiffTag.SAMPLESPERPIXEL, 1); image.SetField(TiffTag.ROWSPERSTRIP, 144); image.SetField(TiffTag.COMPRESSION, Compression.CCITTFAX4); image.SetField(TiffTag.PHOTOMETRIC, Photometric.MINISWHITE); image.SetField(TiffTag.FILLORDER, FillOrder.MSB2LSB); image.SetField(TiffTag.PLANARCONFIG, PlanarConfig.CONTIG); image.SetField(TiffTag.XRESOLUTION, 150.0); image.SetField(TiffTag.YRESOLUTION, 150.0); image.SetField(TiffTag.RESOLUTIONUNIT, ResUnit.INCH); // set custom tags string value = "Tag contents"; image.SetField(TIFFTAG_ASCIITAG, value); short[] shorts = { 263, 264 }; image.SetField(TIFFTAG_SHORTTAG, 2, shorts); int[] longs = { 117, 118 }; image.SetField(TIFFTAG_LONGTAG, 2, longs); float[] rationals = { 0.333333f, 0.444444f }; image.SetField(TIFFTAG_RATIONALTAG, 2, rationals); float[] floats = { 0.666666f, 0.777777f }; image.SetField(TIFFTAG_FLOATTAG, 2, floats); double[] doubles = { 0.1234567, 0.7654321 }; image.SetField(TIFFTAG_DOUBLETAG, 2, doubles); byte[] bytes = { 89, 90 }; image.SetField(TIFFTAG_BYTETAG, 2, bytes); int ifd_offset = 1234567890; image.SetField(TIFFTAG_IFDTAG, ifd_offset); // Write the information to the file image.WriteEncodedStrip(0, buffer, 25 * 144); // Close the file image.Dispose(); // Now open that TIFF back and read new tags image = Tiff.Open(outputFileName, "r"); FieldValue[] res = image.GetField(TIFFTAG_ASCIITAG); Assert.IsNotNull(res); Assert.AreEqual(1, res.Length); Assert.AreEqual(value, res[0].ToString()); res = image.GetField(TIFFTAG_SHORTTAG); Assert.IsNotNull(res); Assert.AreEqual(2, res.Length); Assert.AreEqual(2, res[0].ToInt()); Assert.AreEqual(shorts, res[1].ToShortArray()); res = image.GetField(TIFFTAG_LONGTAG); Assert.IsNotNull(res); Assert.AreEqual(2, res.Length); Assert.AreEqual(2, res[0].ToInt()); Assert.AreEqual(longs, res[1].ToIntArray()); res = image.GetField(TIFFTAG_RATIONALTAG); Assert.IsNotNull(res); Assert.AreEqual(2, res.Length); Assert.AreEqual(2, res[0].ToInt()); Assert.AreEqual(rationals, res[1].ToFloatArray()); res = image.GetField(TIFFTAG_FLOATTAG); Assert.IsNotNull(res); Assert.AreEqual(2, res.Length); Assert.AreEqual(2, res[0].ToInt()); Assert.AreEqual(floats, res[1].ToFloatArray()); res = image.GetField(TIFFTAG_DOUBLETAG); Assert.IsNotNull(res); Assert.AreEqual(2, res.Length); Assert.AreEqual(2, res[0].ToInt()); Assert.AreEqual(doubles, res[1].ToDoubleArray()); res = image.GetField(TIFFTAG_BYTETAG); Assert.IsNotNull(res); Assert.AreEqual(2, res.Length); Assert.AreEqual(2, res[0].ToInt()); Assert.AreEqual(bytes, res[1].ToByteArray()); res = image.GetField(TIFFTAG_IFDTAG); Assert.IsNotNull(res); Assert.AreEqual(1, res.Length); Assert.AreEqual(ifd_offset, res[0].ToInt()); image.Dispose(); Tiff.SetTagExtender(m_parentExtender); }