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

时间:2014-07-17 19:23:15

标签: c# compression tiff

我正在尝试打开已经存在的多页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);

                        }

正如我所说,这段代码适用于单页TIFF,我得到了相当多的压缩。关于如何将其应用于多页tiff,我感到很遗憾。我得到的主要错误是我无法在编码器上多次调用Save()方法,但如果是这样的话,我应该如何在第一个之后获取所有页面呢?

0 个答案:

没有答案