如何在FreeImage中找到TIFF图像的压缩方式?

3

我使用FreeImage处理多页TIFF文件,在某些情况下我有一个TIFF页面,存在于FIBITMAP中,我需要知道它的压缩方式。你有什么想法吗?


我有同样的问题!如果你找到了如何解决它,请在这里回答! - xZ6a33YaYEfmv
1个回答

1

FreeImage没有内置的函数来显示tiff文件的压缩方案,但是您可以使用Exif元数据来找出(dib是本地FIBITMAP变量,这是c#代码):

    public string GetCompressionName()
    {
        long _compression;

        if (dib.IsNull)
           throw new Exception("dib is empty - image haven't been loaded!");

        //Searching tag in metadata.
        ImageMetadata iMetadata = new ImageMetadata(dib);

        foreach (MetadataModel metadataModel in iMetadata)
        {
            if (metadataModel.ToString() == "FIMD_EXIF_MAIN")
            {
                try
                { long.TryParse(metadataModel.GetTag("Compression").ToString(), out _compression); }
                catch
                { return "Unknown"; }


                if (CompressType.ContainsKey(_compression))
                {
                    string _compressionName;
                    CompressType.TryGetValue(_compression, out _compressionName);

                    if (_compressionName != null)
                    {
                        return _compressionName;
                    }
                }
            }
        }

        return "Unknown";
    }

Dictionary<long, string> CompressType = new Dictionary<long, string>()
        { 
            {1, "Uncompressed" } ,
            {2, "CCITT modified Huffman RLE"},
            {32773, "PackBits"}, 
            {3, "CCITT3"},
            {4, "CCITT4"},
            {5, "LZW"},
            {6, "JPEG_old"},
            {7, "JPEG_new"},
            {32946, "DeflatePKZIP"},
            {8, "DeflateAdobe"},
            {9, "JBIG_85"},
            {10, "JBIG_43"},
            {11, "JPEG"},
            {12, "JPEG"},
            {32766, "RLE_NeXT"},
            {32809, "RLE_ThunderScan"},
            {32895, "RasterPadding"},
            {32896, "RLE_LW"},
            {32897, "RLE_HC"},
            {32947, "RLE_BL"},
            {34661, "JBIG"},
            {34713, "Nikon_NEF"},
            {34712,"JPEG2000"}
        };

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接