private static string ExportChapter(string Chapter, string OutputDir, string Format, ILanguage Language, bool SubDir = true, string ProgressMessage = null)
        {
            var Pages = Directory.GetFiles(Chapter);

            if (Pages.Length == 0)
            {
                return(null);
            }

            Format = Format.TrimStart('.').ToLower();

            var ChapName   = Path.GetFileName(Chapter.TrimEnd('\\', '/'));
            var ChapOutDir = SubDir ? Path.Combine(OutputDir, ChapName) : OutputDir;

            if (!Directory.Exists(ChapOutDir))
            {
                Directory.CreateDirectory(ChapOutDir);
            }

            for (int i = 0; i < Pages.Length; i++)
            {
                Main.Status    = string.Format(ProgressMessage ?? Main.Language.Exporting, i, Pages.Length);
                Main.SubStatus = ChapName;

                var Page    = Pages[i];
                var OutPage = Path.Combine(ChapOutDir, Path.GetFileNameWithoutExtension(Page) + "." + Format);
                Retry(() =>
                {
                    using (Image Original = Image.FromFile(Page))
                    {
                        ImageFormat OutFormat = DataTools.GetImageFormat(Format);
                        if (OutFormat.Guid == ImageFormat.Jpeg.Guid)
                        {
                            using (EncoderParameters JpgEncoder = new EncoderParameters(1))
                                using (EncoderParameter Parameter = new EncoderParameter(Encoder.Quality, 93L))
                                {
                                    ImageCodecInfo JpgCodec = ImageCodecInfo.GetImageDecoders().First(codec => codec.FormatID == ImageFormat.Jpeg.Guid);
                                    JpgEncoder.Param[0]     = Parameter;
                                    Original.Save(OutPage, JpgCodec, JpgEncoder);
                                }
                        }
                        else
                        {
                            Original.Save(OutPage);
                        }
                    }
                });
            }

            Main.Status    = Language.IDLE;
            Main.SubStatus = "";
            return(ChapOutDir);
        }