From adea5231b43cf418f558b7a2ec6955e4404fb351 Mon Sep 17 00:00:00 2001 From: WMJ Date: Wed, 30 Aug 2023 10:57:48 +0800 Subject: [PATCH] =?UTF-8?q?=EF=BC=8D=E4=BF=AE=E5=A4=8D=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E6=AD=A3=E5=B8=B8=E5=AF=BC=E5=87=BAJPEG2000=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=20=20(fix=20#178)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App/Processor/ImageExtractor.cs | 39 +++++++++++-------- ...4\346\226\260\345\216\206\345\217\262.txt" | 3 +- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/App/Processor/ImageExtractor.cs b/App/Processor/ImageExtractor.cs index b34620ba..a5b58ccc 100644 --- a/App/Processor/ImageExtractor.cs +++ b/App/Processor/ImageExtractor.cs @@ -189,25 +189,32 @@ void SaveImageBytes(ImageInfo info, byte[] bytes, string fileName) { Tracker.TraceMessage(Tracker.Category.OutputFile, n); Tracker.TraceMessage("导出图片:" + n); } - if ((vFlip || _pageRotation != 0) && info.ExtName == Constants.FileExtensions.Jp2) { - try { - using (var ms = new MemoryStream(bytes)) - using (var bmp = new FreeImageBitmap(ms)) { - RotateBitmap(bmp, _pageRotation, vFlip); - info.CreatePaletteAndIccProfile(bmp); - try { - bmp.Save(n); - } - catch (FreeImageException) { - File.Delete(n); - bmp.Save(new FilePath(n).ChangeExtension(Constants.FileExtensions.Png)); + if (info.ExtName == Constants.FileExtensions.Jp2) { + if (vFlip || _pageRotation != 0) { + try { + using (var ms = new MemoryStream(bytes)) + using (var bmp = new FreeImageBitmap(ms)) { + RotateBitmap(bmp, _pageRotation, vFlip); + info.CreatePaletteAndIccProfile(bmp); + try { + bmp.Save(n); + } + catch (FreeImageException) { + File.Delete(n); + bmp.Save(new FilePath(n).ChangeExtension(Constants.FileExtensions.Png)); + } + SaveMaskedImage(info, bmp, fileName); } - SaveMaskedImage(info, bmp, fileName); + } + catch (FreeImageException ex) { + Tracker.TraceMessage(ex); + bytes.DumpBytes(n); } } - catch (FreeImageException ex) { - Tracker.TraceMessage(ex); - bytes.DumpBytes(n); + else { + using (FileStream f = new FileStream(n, FileMode.Create)) { + f.Write(bytes, 0, bytes.Length); + } } } else if (PdfName.DEVICECMYK.Equals(info.ColorSpace)) { diff --git "a/\346\233\264\346\226\260\345\216\206\345\217\262.txt" "b/\346\233\264\346\226\260\345\216\206\345\217\262.txt" index 3ba4d436..de29c521 100644 --- "a/\346\233\264\346\226\260\345\216\206\345\217\262.txt" +++ "b/\346\233\264\346\226\260\345\216\206\345\217\262.txt" @@ -2,7 +2,7 @@ 新增功能: 第一个开放源代码版本。 修改了授权协议。 - 合并图片功能使用JPEG图片EXIF旋转角度。 + 合并图片功能使用 JPEG 图片 EXIF 旋转角度。 替换字体功能增加简单修改文本简繁体、全角半角转换的功能(用于处理一些旧的 PDF 文档)。 增加了合并文件功能的合并冗余数据选项(之前版本中,该选项的行为是默认行为,可能导致无法合并源文档的某些数据)。 合并文件功能支持在添加文件后再排序文件列表。 @@ -70,6 +70,7 @@ 合并文件功能自动旋转页面适应源图像尺寸选项无效。 点击生成书签功能“忽略文本”表头会导致程序崩溃。 提取页面功能保留书签的功能在勾选清理文档选项后会失效。 + 无法提取 JPEG 2000 格式图片。 0.6.2.0 2021年11月9日 新增功能: