diff --git a/CSRender/CSRender.cs b/CSRender/CSRender.cs index 25f739e3b718c7400b0d2d64260c5533453d437e..ec648143a5c6cf5aa15190d607b970d766f8949a 100644 --- a/CSRender/CSRender.cs +++ b/CSRender/CSRender.cs @@ -170,6 +170,41 @@ namespace CSRender { return pageCount;// ページ数を返却します } /// + /// imageをRGB3チェンネルbitmapにRenderingする + /// + /// + public static System.Drawing.Bitmap RenderRgbBitMap( + PdfiumViewer.PdfDocument docG, + int index, + double dpiX, + double dpiY, + PdfRenderFlags flg + ){ + var bitmap = docG.Render(index, (float)dpiX, (float)dpiY, flg) as System.Drawing.Bitmap; + if (bitmap.PixelFormat == System.Drawing.Imaging.PixelFormat.Format24bppRgb) + return bitmap; + // + var cloneRect = new System.Drawing.RectangleF(0, 0, bitmap.Size.Width, bitmap.Size.Height); + var format = System.Drawing.Imaging.PixelFormat.Format24bppRgb; + var clonebitmap = bitmap.Clone(cloneRect, format); + // + //bitmap.Dispose(); + return clonebitmap; + /* + 保存時にBitmapのクローンを作成し、その際のBitmapの形式に24bitRGB(PixelFormat.Format24bppRgb)を + 指定し3版RGBTiffを出力します。 + System.Drawing.Imaging.PixelFormat format = PixelFormat.Format24bppRgb; + clonebitmap = bitmap1.Clone(cloneRect, format); + ref: + https://maywork.net/computer/csharp_convert_to_format32bppargb/ + https://www.webdevqa.jp.net/ja/c%23/c%EF%BC%83%E3%81%A7%E3%81%AE%E3%83%93%E3%83%83%E3%83%88%E3%83%9E%E3%83%83%E3%83%97pixelformats%E3%81%AE%E5%A4%89%E6%8F%9B/968763414/ + https://gist.github.com/nissuk/888601/ee0943dd0d35dc9c6b47358b9e1a89af8cc9898b + https://stackoverflow.com/questions/28448474/render-pdf-page-to-bitmap-using-pdfium + https://qiita.com/Nuits/items/4a2fbc0f4e8583bd5531 + PixelFormat dump https://maywork.net/computer/csharp_convert_to_format32bppargb/ + */ + } + /// /// pdfのページを画像に出力する /// /// PdfDocument @@ -193,9 +228,8 @@ namespace CSRender { using (var memStrm = new MemoryStream()) { PdfRenderFlags flg = (PdfRenderFlags.ForPrinting | PdfRenderFlags.CorrectFromDpi); - using(var img = docG.Render(index, (float)pm.Dpi, (float)pm.Dpi, flg)){ + using(var img = RenderRgbBitMap(docG, index, (float)pm.Dpi, (float)pm.Dpi, flg) ){ img.Save(memStrm, System.Drawing.Imaging.ImageFormat.Bmp); - //img.Save(memStrm, System.Drawing.Imaging.ImageFormat.Jpeg); /* // ImageFormatJPEGの時 dpi = 350,TIFF @@ -225,7 +259,7 @@ namespace CSRender { img.Dispose(); } var bmp = new System.Drawing.Bitmap(memStrm); - if (bDump) { + if (bDump) { echo($"bmp=w:{bmp.Size.Width},h:{bmp.Size.Height}"); } //Console.WriteLine($"OrgReso({bmp.HorizontalResolution},{bmp.VerticalResolution})"); @@ -461,7 +495,7 @@ namespace CSRender { if (pm == null) pm = new RenderConditionParams(); PdfRenderFlags flg = (PdfRenderFlags.ForPrinting | PdfRenderFlags.CorrectFromDpi); - System.Drawing.Image img = docG.Render(index, (float)pm.Dpi, (float)pm.Dpi, flg); + System.Drawing.Image img =RenderRgbBitMap(docG, index, (float)pm.Dpi, (float)pm.Dpi, flg); img.Save(memStrm, System.Drawing.Imaging.ImageFormat.Bmp); //img.Save(memStrm, System.Drawing.Imaging.ImageFormat.Jpeg); // [注意] PDFuim用にFlush()必要 diff --git a/CSRender/Properties/AssemblyInfo.cs b/CSRender/Properties/AssemblyInfo.cs index fe94bcfe91d4c0718494aa0b7fd8b64e61a1171d..6e3a7da35507cbf4bfecdbc5565997ab3bbb2c2d 100644 --- a/CSRender/Properties/AssemblyInfo.cs +++ b/CSRender/Properties/AssemblyInfo.cs @@ -33,11 +33,13 @@ using System.Runtime.InteropServices; // すべての値を指定するか、次を使用してビルド番号とリビジョン番号を既定に設定できます // 既定値にすることができます: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.3.1.0")] -[assembly: AssemblyFileVersion("1.3.1.0")] +[assembly: AssemblyVersion("1.3.2.0")] +[assembly: AssemblyFileVersion("1.3.2.0")] [assembly: NeutralResourcesLanguage("ja")] -// rev:1.3.1.x:2021/10/05 :不要コード削除(Windows.Data.pdf) + +// rev:1.3.2.0:2021/12/20 :aRGB4チャンネル保存からRGB3チャンネルに変更 +// rev:1.3.1.0:2021/10/05 :不要コード削除(Windows.Data.pdf) // rev:1.3.0.5:2021/09/14 :/Paraで並行プロセス最大値の設定追加 // rev:1.3.0.4:2021/04/29 :Helpの記述抜け "/Result"の対応 // rev:1.3.0.3:2020/11/22 :/Result <比較結果> を実装。diff画像を出力 diff --git a/CSRender_ReadMe.txt b/CSRender_ReadMe.txt index 59aea8cf975a7b118227f0c6860b0f49a64fee64..867f15503164cddbb35e8d815f60e0c72611bc46 100644 --- a/CSRender_ReadMe.txt +++ b/CSRender_ReadMe.txt @@ -1,3 +1,4 @@ +V1.3.2.0:2021/12/20 :aRGB4`lۑRGB3`lɕύX V1.3.1.0:2021/10/04 :UWPpAData.pdf̍폜A * UWPpR[h폜Bʏ̃t@CANZXMemoryStreamɕύX * Widnows RT Windows.Data.pdf̎gp폜.PDFium݂̂Ƃ diff --git a/bin/Release/CSRender.exe b/bin/Release/CSRender.exe index 006e3d54e5871083a3d43097fe0df579a38e99a7..f919e8b19a4d836cfc8d6140ec2e6bcd24fc0389 100644 Binary files a/bin/Release/CSRender.exe and b/bin/Release/CSRender.exe differ