From 114120f46bf1a3aa7114a0f20233a664f931e4a8 Mon Sep 17 00:00:00 2001 From: bmlpg Date: Sat, 22 Mar 2025 08:52:56 +0000 Subject: [PATCH 1/2] Account for image resolution units other than pixels per inch Added logic to convert the resolution to "pixels per inch" for images which have it specified as "pixels per meter" or "pixels per centimeter". --- main/SS/Util/ImageUtils.cs | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/main/SS/Util/ImageUtils.cs b/main/SS/Util/ImageUtils.cs index 32de17166..8676433a0 100644 --- a/main/SS/Util/ImageUtils.cs +++ b/main/SS/Util/ImageUtils.cs @@ -103,7 +103,28 @@ public static Size GetImageDimension(Stream is1, PictureType type) */ public static int[] GetResolution(Image r) { - return new int[] { (int)r.Metadata.HorizontalResolution, (int)r.Metadata.VerticalResolution }; + ImageMetadata imageMetadata = r.Metadata; + + double horizontalResolution = 0; + double verticalResolution = 0; + + if (imageMetadata.ResolutionUnits == PixelResolutionUnit.PixelsPerMeter) + { + horizontalResolution = imageMetadata.HorizontalResolution * 0.0254D; + verticalResolution = imageMetadata.VerticalResolution * 0.0254D; + } + else if (imageMetadata.ResolutionUnits == PixelResolutionUnit.PixelsPerCentimeter) + { + horizontalResolution = imageMetadata.HorizontalResolution * 2.54D; + verticalResolution = imageMetadata.VerticalResolution * 2.54D; + } + else + { + horizontalResolution = imageMetadata.HorizontalResolution; + verticalResolution = imageMetadata.VerticalResolution; + } + + return new int[] { (int)Math.Round(horizontalResolution), (int)Math.Round(verticalResolution) }; } /** @@ -296,4 +317,4 @@ private static double GetRowHeightInPixels(ISheet sheet, int rowNum) } } -} \ No newline at end of file +} From 2dd0fa7c92fcf78287a067b4e25edf9159389585 Mon Sep 17 00:00:00 2001 From: bmlpg Date: Sat, 22 Mar 2025 09:09:21 +0000 Subject: [PATCH 2/2] Added "using SixLabors.ImageSharp.Metadata" --- main/SS/Util/ImageUtils.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/main/SS/Util/ImageUtils.cs b/main/SS/Util/ImageUtils.cs index 8676433a0..1afac0674 100644 --- a/main/SS/Util/ImageUtils.cs +++ b/main/SS/Util/ImageUtils.cs @@ -22,7 +22,8 @@ namespace NPOI.SS.Util using NPOI.SS.UserModel; using NPOI.Util; using SixLabors.ImageSharp; - + using SixLabors.ImageSharp.Metadata; + /** * @author Yegor Kozlov */