使用.Net如何用新图像替换多页tiff文件的第一页。最好不要创建新文件。
答案 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写回磁盘之前直接编辑/替换图像。