开发者

Adding custom metadata tags using LibTiff.Net

I now how to add a custom tag to an image but it's not showing up as the tag name in image viewer. I only see the number I assigned and its value.

Why there is no proper name for my custom tag?

using Bi开发者_JAVA技巧tMiracle.LibTiff.Classic;

namespace WindowsFormsApplication1
{
class Program
{
    private const TiffTag IMG_GUID = (TiffTag)666;

    private static Tiff.TiffExtendProc m_parentExtender;

    public static void TagExtender(Tiff tif)
    {
        TiffFieldInfo[] tiffFieldInfo = 
        {
            new TiffFieldInfo(IMG_GUID, -1, -1, TiffType.ASCII, FieldBit.Custom, true, false, "IMG_GUID"),
        };

        tif.MergeFieldInfo(tiffFieldInfo, tiffFieldInfo.Length);

        if (m_parentExtender != null)
            m_parentExtender(tif);
    }

    static void Main(string[] args)
    {
        // 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);
        byte[] buffer = new byte[25 * 144];

        string outputFileName = writeTiffWithCustomTags(buffer);

        // restore previous tag extender
        Tiff.SetTagExtender(m_parentExtender);
    }

    private static string writeTiffWithCustomTags(byte[] buffer)
    {
        string existingTiffName = "..\\..\\tifimages\\cramps.tif";
        string outputFileName = existingTiffName;
        using (Tiff image = Tiff.Open(outputFileName, "a"))
        {   
            // set custom tags
            image.SetDirectory(0);
            string value = "test";
            image.SetField(IMG_GUID, value);
            image.CheckpointDirectory();

            // Write the information to the file
            image.WriteEncodedStrip(0, buffer, 25 * 144);
        }
        return outputFileName;
    }
}

}


The application you use for viewing your TIFFs should know about your custom tags beforehand in order to be able to display its names.

It's not gonna happen! (Because you may select almost arbitrary integer for your custom tag).

So, there is nothing wrong with custom tags being displayed as (an integer, a value) pair. It's just the way custom tag work.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜