简单的TIFF管理类






4.73/5 (35投票s)
2004年12月15日

255696

7413
使用GDI+解析TIFF文件。
引言
与传统的GDI相比,.NET框架自带的GDI+功能更强大。本文描述了一个非常简单的类,用于解析多页TIFF文件。操作包括拆分、合并和转换TIFF压缩编码器。
使用代码
对于那些玩转传真或OCR软件的人来说,您可能会对各种TIFF编码器格式感到厌倦。GDI+提供的EncoderValue
包含适用于图像的大多数压缩编码器信息。默认情况下,使用Image.Save()
保存的图像使用LZW编码器,而市场上大多数传真软件使用CCITT标准。因此,在处理TIFF图像时,您应该仔细考虑。TiffManager
中的几乎所有方法都提供了一个编码器参数来处理编码部分。
/// <summary>
/// This function will output the image
/// to a TIFF file with specific compression format
/// </summary>
/// <param name="outPutDirectory">
/// The splited images' directory</param>
/// <param name="format">The codec for compressing</param>
/// <returns>splited file name array list</returns>
public ArrayList SplitTiffImage(string outPutDirectory,EncoderValue format)
{
string fileStartString = outPutDirectory + "\\" +
GetFileNameStartString(_ImageFileName);
ArrayList splitedFileNames=new ArrayList();
try
{
Guid objGuid=image.FrameDimensionsList[0];
FrameDimension objDimension=new FrameDimension(objGuid);
//Saves every frame as a separate file.
Encoder enc=Encoder.Compression;
int curFrame=0;
for (int i=0;i<_PageNumber;i++)
{
image.SelectActiveFrame(objDimension,curFrame);
EncoderParameters ep=new EncoderParameters(1);
ep.Param[0]=new EncoderParameter(enc,(long)format);
ImageCodecInfo info=GetEncoderInfo("image/tiff");
//Save the master bitmap
string fileName=string.Format("{0}{1}.TIF",
fileStartString, i.ToString());
image.Save(fileName,info,ep);
splitedFileNames.Add(fileName);
curFrame++;
}
}
catch (Exception)
{
throw;
}
return splitedFileNames;
}
TiffManager
的各种签名如下
public void ConvertTiffFormat(string strNewImageFileName,
EncoderValue compressEncoder);
public Image GetSpecificPage(int pageNumber);
public void JoinTiffImages(string[] imageFiles, string outFile,
EncoderValue compressEncoder);
public void RemoveAPage(int pageNumber, EncoderValue compressEncoder,
string strFileName);
public ArrayList SplitTiffImage(string outPutDirectory, EncoderValue format);
关注点
这确实是一个简单的TIFF处理类。您可以更深入地研究,例如实现分辨率转换等。
历史
- 2004年12月15日。