From 4c4adb386f96ce5aaed4be165d0020cef64bb750 Mon Sep 17 00:00:00 2001 From: WMJ Date: Wed, 18 Jan 2023 19:29:36 +0800 Subject: [PATCH] =?UTF-8?q?=EF=BC=8B=E5=85=81=E8=AE=B8=E6=8F=90=E5=8F=96?= =?UTF-8?q?=E7=81=B0=E5=BA=A6=E6=8E=A9=E8=86=9C=E5=9B=BE=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App/Processor/ImageExtractor.cs | 11 +++-------- App/Processor/Imaging/ImageInfo.cs | 8 +++----- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/App/Processor/ImageExtractor.cs b/App/Processor/ImageExtractor.cs index 56a9720d..72761b09 100644 --- a/App/Processor/ImageExtractor.cs +++ b/App/Processor/ImageExtractor.cs @@ -164,21 +164,16 @@ internal void ExtractImage(ImageInfo info) { var fileName = GetNewImageFileName(); if (info.ExtName == Constants.FileExtensions.Png || info.ExtName == Constants.FileExtensions.Tif - //|| info.MaskBytes != null ) { SaveBitmap(info, bytes, fileName); } else { SaveImageBytes(info, bytes, fileName); } - if (info.MaskBytes != null) { - using (var m = new FreeImageBitmap( - info.MaskSize.Width, info.MaskSize.Height, - (info.MaskSize.Width + 7) / 8, PixelFormat.Format1bppIndexed, - info.MaskBytes)) { - //var r = bmp.Composite (false, null, m); + if (info.Mask != null) { + using (var m = info.Mask) { m.Palette.CreateGrayscalePalette(); - m.Save(fileName + "[mask]" + Constants.FileExtensions.Tif); + m.Save($"{fileName}[mask]{(info.Mask.PixelFormat == PixelFormat.Format1bppIndexed ? Constants.FileExtensions.Tif : Constants.FileExtensions.Png)}"); } } _totalImageCount++; diff --git a/App/Processor/Imaging/ImageInfo.cs b/App/Processor/Imaging/ImageInfo.cs index 721b3e41..dc99c406 100644 --- a/App/Processor/Imaging/ImageInfo.cs +++ b/App/Processor/Imaging/ImageInfo.cs @@ -26,8 +26,7 @@ internal sealed class ImageInfo public PdfName PaletteColorSpace { get; private set; } public byte[] PaletteBytes { get; private set; } public byte[] ICCProfile { get; private set; } - public Size MaskSize { get; private set; } - public byte[] MaskBytes { get; private set; } + public FreeImageBitmap Mask { get; private set; } public int PaletteEntryCount { get; private set; } public RGBQUAD[] PaletteArray { get; private set; } public PdfImageData InlineImage { get; private set; } @@ -200,9 +199,8 @@ private static byte[] DecodeImage(ImageInfo info, ImageExtracterOptions options) ) { var mi = new ImageInfo(sm); var mask = DecodeImage(mi, new ImageExtracterOptions() { InvertBlackAndWhiteImages = !options.InvertSoftMask }); - if (mask != null && mi.BitsPerComponent == 1) { - info.MaskBytes = mask; - info.MaskSize = new Size(mi.Width, mi.Height); + if (mask != null) { + info.Mask = ImageExtractor.CreateFreeImageBitmap(mi, ref mask, options.VerticalFlipImages, false); } } return decodedBytes;