2011-03-25 2 views

Répondre

1

FreeImage n'a pas construit en fonction de révéler le système de compression de fichier tiff, mais vous pouvez utiliser les métadonnées Exif pour comprendre cela (DIB est variable FIBITMAP locale, c'est C# code):

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"} 
     }; 
Questions connexes