使用.Net替换现有多页面Tiff中的图像

时间:2009-11-23 18:58:23

标签: c# .net drawing tiff

使用.Net如何用新图像替换多页tiff文件的第一页。最好不要创建新文件。

2 个答案:

答案 0 :(得分:1)

我认为如果不创建另一个文件,你就无法做到 您可以先读取所有图像,替换要替换的图像,关闭原始源,然后用新的多页tiff替换文件。但我相信它会占用大量内存,我会一次读取一个图像,并将其写入新文件,最后一步,更改文件名。

类似的东西:

 // open a multi page tiff using a Stream
 using(Stream stream = // your favorite stream depending if you have in memory or from file.)
 {
 Bitmap bmp = new Bitmap(imagePath);

 int frameCount = bmp.GetFrameCount(FrameDimension.Page);

 // for a reference for creating a new multi page tiff see: 
 // http://www.bobpowell.net/generating_multipage_tiffs.htm
 // Here all the stuff of the Encoders, and all that stuff.

 EncoderParameters ep = new EncoderParameters(1);
 ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.MultiFrame);

 Image newTiff = theNewFirstImage;

 for(int i=0; i<frameCount; i++)
 {
     if(i==0)
     {
          // Just save the new image instead of the first one.
          newTiff.Save(newFileName, imageCodecInfo, Encoder);
     }
     else
     {
          Bitmap newPage = bmp.SelectActiveFrame(FrameDimension.Page);
          newTiff.SaveAdd(newPage, ep);
     }
 }


 ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.Flush);
 newTiff.SaveAdd(ep);
 }
 // close all files and Streams and the do original file delete, and newFile change name... 

希望它有所帮助。对于.net Imaging中的问题,Bob Powel页面有很多好东西

答案 1 :(得分:0)

这很容易做到。这个CodeProject tutorial page上的源代码可以帮助您做您想做的事情。

基本上,你需要打电话给Image.GetFrameCount(),它会为你提供多页TIFF中的图像数量(只是为了确认你实际上有多页TIFF)。

您可能需要尝试如何保存生成的TIFF - 您可能需要手动重新组合TIFF,或者您可以在将TIFF写回磁盘之前直接编辑/替换图像。