SaveAdd 上的 C# 一般错误 GDI+

C# Generic Error GDI+ on SaveAdd

我正在尝试创建一个小程序来从文件夹中取出一组多页 TIFF 文件,删除首页并使用相同的名称将剩余页面保存到单独的输出文件夹。

文件可以毫无问题地保存到输出文件夹,但是当它到达 second 文档上的 SaveAdd 函数时,我得到 "A Generic Error Occurred in GDI+"。第一个文档(输出 7 页)正确添加所有页面。尝试在初始页面后添加其他 pages/frames 时,第二个文档失败。我已经尝试过不同的文档作为第一个和第二个不同的页数。任何人都可以阐明这个问题吗?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;

namespace FrontPageRemover
{
    class Program
    {
        static void Main(string[] args)
        {
            Image frame;
            int pages;
            string fileName;

            string folderPath = @"TIFF\Tiff Files";
            string[] files = Directory.GetFiles(folderPath);
            Image image;

            Encoder encoder = Encoder.SaveFlag;
            ImageCodecInfo encoderInfo = ImageCodecInfo.GetImageEncoders().First(i => i.MimeType == "image/tiff");
            EncoderParameters encoderParams = new EncoderParameters(1);
            encoderParams.Param[0] = new EncoderParameter(encoder, (long)EncoderValue.MultiFrame);

            foreach (string file in files)
            {
                image = Image.FromFile(file);
                pages = image.GetFrameCount(FrameDimension.Page);
                image.SelectActiveFrame(FrameDimension.Page, 1);

                fileName = Path.GetFileName(file);
                image.Save(@"TIFF\Files Out\" + fileName, encoderInfo, encoderParams);

                for (int index = 2; index < pages; index++)
                {
                    image.SelectActiveFrame(FrameDimension.Page, index);
                    encoderParams.Param[0] = new EncoderParameter(encoder, (long)EncoderValue.FrameDimensionPage);
                    image.SaveAdd(encoderParams);                     
                }

                encoderParams.Param[0] = new EncoderParameter(encoder, (long)EncoderValue.Flush);
                image.SaveAdd(encoderParams);
                image.Dispose();
            }

        }
    }
}

关于未 updating/being 正确处理的编码器参数,评论为我指明了正确的方向。

问题出在

encoderParams.Param[0] = new EncoderParameter(encoder, (long)EncoderValue.MultiFrame);

在循环之外。因此第一个文件工作正常但第二个文件失败。