Добавление пользовательских тегов метаданных с помощью LibTiff.Net - PullRequest
0 голосов
/ 22 августа 2011

Я теперь, как добавить пользовательский тег к изображению, но он не отображается как имя тега в программе просмотра изображений. Я вижу только номер, который я присвоил, и его значение.

Почему для моего пользовательского тега нет подходящего имени?

using BitMiracle.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;
    }
}

}

1 Ответ

1 голос
/ 22 августа 2011

Приложение, которое вы используете для просмотра ваших TIFF-файлов, должно заранее знать о ваших пользовательских тегах, чтобы иметь возможность отображать их имена.

Этого не произойдет!(Поскольку вы можете выбрать почти произвольное целое число для своего пользовательского тега).

Таким образом, нет ничего плохого в том, что пользовательские теги отображаются в виде пары (целое число, значение).Это просто способ работы с пользовательским тегом.

...