C# 压缩和重新保存多页Tiff图像

C# 压缩和重新保存多页Tiff图像,c#,compression,tiff,C#,Compression,Tiff,我试图打开一个已经存在的多页tiff图像,将其分解为所有单独的页面,并将其保存到位图数组中,压缩页面,然后将其重新保存到比我们开始时更小的tiff图像中 我的限制是,它必须能够在Windows Server 2003上运行,这意味着我必须使用wpfImage来压缩图像 到目前为止,我已经能够抓取所有的页面,并且我能够成功地保存单个页面的tiff,但是如果我尝试重新保存多页面tiff,我的代码将失败。以下是主要的压缩代码: using (MemoryStream ms = new MemorySt

我试图打开一个已经存在的多页tiff图像,将其分解为所有单独的页面,并将其保存到位图数组中,压缩页面,然后将其重新保存到比我们开始时更小的tiff图像中

我的限制是,它必须能够在Windows Server 2003上运行,这意味着我必须使用
wpfImage
来压缩图像

到目前为止,我已经能够抓取所有的页面,并且我能够成功地保存单个页面的tiff,但是如果我尝试重新保存多页面tiff,我的代码将失败。以下是主要的压缩代码:

using (MemoryStream ms = new MemoryStream())
                        {

                            TiffBitmapEncoder encoder = new TiffBitmapEncoder();
                            ms.Position = 0;
                            for (int i = 1; i < bmp.Length; i ++ )
                            {
                                //ms.SetLength(0);
                                Bitmap page = new Bitmap(bmp[i]);
                                page.Save(ms, ImageFormat.Tiff);


                                BitmapImage wpfImage = new BitmapImage();
                                wpfImage.BeginInit();
                                wpfImage.StreamSource = ms;
                                wpfImage.EndInit();

                                encoder.Compression = TiffCompressOption.Ccitt4;
                                encoder.Frames.Add(BitmapFrame.Create(wpfImage));
                                encoder.Save(ms);
                            }                               
                            Image tiff = Image.FromStream(ms);
                            tiff.Save(location);

                        }
使用(MemoryStream ms=new MemoryStream())
{
TiffBitmapEncoder编码器=新的TiffBitmapEncoder();
ms.Position=0;
对于(int i=1;i

正如我所说,这段代码适用于单页TIFF,我得到了相当好的压缩量。我只是不知道如何将此应用于多页TIFF。我遇到的主要错误是,我不能在编码器上多次调用
Save()
方法,但如果是这样,我如何在第一个页面之后抓取所有页面?

能否先设置所有帧,然后调用编码器。最后保存?必须将页面作为帧添加到第一个tiff图像中。在你最喜欢的搜索引擎(“.net创建多页tiff”)上查找它。