I use FreeImage to work with multipage TIFF files and at some point I have a TIFF page, in a FIBITMAP
and I need to know its compression. Any idea how to do this?
Asked
Active
Viewed 1,572 times
3

Alexandru Pupsa
- 1,798
- 4
- 21
- 40
-
I have the same question! If you'll find how it can be done, please answer here! – xZ6a33YaYEfmv May 01 '11 at 14:42
1 Answers
1
FreeImage has no built in function to reveal the tiff file compression scheme, however you can use Exif metadata to figure that out (dib is local FIBITMAP variable, this is 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"}
};

cookieMonster
- 508
- 6
- 15