我一直在試圖使用TiffUtil類的mergeTiffStreams方法在貼:合併多個TIFF文件
http://kseesharp.blogspot.com/2007/12/class-for-tiff-manipulation.html
然而,像其他人紛紛發表意見,該線程,結束結果是我收到只包含我的第一個TIFF文件的Stream。我在MemoryStream陣列中傳遞的其他TIFF不包括在內。
有沒有其他人遇到過這個問題?如果是這樣,任何建議將不勝感激。
謝謝。
[UPDATE]
這是我現在的代碼。它只返回流包含在傳入數組的第一個TIFF。
public MemoryStream mergeTiffStreams(MemoryStream[] tiffStreams)
{
if (tiffStreams == null)
throw new ArgumentNullException("tiffStreams");
Encoder enc = Encoder.SaveFlag;
ImageCodecInfo info = null;
foreach (ImageCodecInfo ice in ImageCodecInfo.GetImageEncoders())
if (ice.MimeType == "image/tiff")
info = ice;
EncoderParameters ep = new EncoderParameters(1);
ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.MultiFrame);
MemoryStream tiffStream = new MemoryStream();
Bitmap masterBitmap = new Bitmap(tiffStreams[0]);
masterBitmap.Save(tiffStream, info, ep);
ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.FrameDimensionPage);
for (int x = 1; x < tiffStreams.Length; x++)
{
masterBitmap.SaveAdd(Image.FromStream(tiffStreams[x]), ep);
}
ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.Flush);
masterBitmap.SaveAdd(ep);
return tiffStream;
}
該代碼沒有格式化,因此閱讀起來很痛苦。我最近寫了一些這樣做。您必須從原始tiff中提取每個頁面並將它們寫入新的tiff。如果可以,我建議使用WPF API。 System.Drawing API基本上是GDI +之上的外觀層。 – Amy 2011-05-02 19:06:23
您是否曾經能夠找到解決此問題的解決方案? – hspain 2012-07-31 22:06:45
更新:http://kseesharp.blogspot.com/2007/12/class-for-tiff-manipulation.html在此時不再存在 – Dexters 2013-02-06 18:31:58