From c21a33534244b3b5c02e3aea68e2e165ee6954a8 Mon Sep 17 00:00:00 2001 From: MarcinZiabek Date: Mon, 8 May 2023 15:46:06 +0200 Subject: [PATCH] Integrated new Image API --- Source/QuestPDF.Examples/ImageExamples.cs | 18 +++ .../QuestPDF.Examples.csproj | 3 + Source/QuestPDF.Examples/multilingual.png | Bin 0 -> 121930 bytes Source/QuestPDF/Drawing/DocumentGenerator.cs | 4 +- Source/QuestPDF/Drawing/PdfCanvas.cs | 2 +- Source/QuestPDF/Elements/Image.cs | 3 +- ...xtensions.cs => ImageElementExtensions.cs} | 0 .../QuestPDF/Fluent/ImageModelExtensions.cs | 62 +++++++++ Source/QuestPDF/Helpers/Helpers.cs | 27 ++++ .../Infrastructure/DocumentSettings.cs | 13 +- Source/QuestPDF/Infrastructure/IDocument.cs | 2 +- Source/QuestPDF/Infrastructure/Image.cs | 124 ++++++++++++------ ...eQuality.cs => ImageCompressionQuality.cs} | 19 +-- .../Infrastructure/ImageScalingQuality.cs | 15 +++ .../Infrastructure/ImageScalingStrategy.cs | 11 ++ 15 files changed, 242 insertions(+), 61 deletions(-) create mode 100644 Source/QuestPDF.Examples/multilingual.png rename Source/QuestPDF/Fluent/{ImageExtensions.cs => ImageElementExtensions.cs} (100%) create mode 100644 Source/QuestPDF/Fluent/ImageModelExtensions.cs rename Source/QuestPDF/Infrastructure/{ImageQuality.cs => ImageCompressionQuality.cs} (72%) create mode 100644 Source/QuestPDF/Infrastructure/ImageScalingQuality.cs create mode 100644 Source/QuestPDF/Infrastructure/ImageScalingStrategy.cs diff --git a/Source/QuestPDF.Examples/ImageExamples.cs b/Source/QuestPDF.Examples/ImageExamples.cs index 91bf3af..a44791a 100644 --- a/Source/QuestPDF.Examples/ImageExamples.cs +++ b/Source/QuestPDF.Examples/ImageExamples.cs @@ -50,6 +50,24 @@ namespace QuestPDF.Examples }); } + [Test] + public void ScalingImageWithAlpha() + { + RenderingTest + .Create() + .PageSize(PageSizes.A4) + .ProducePdf() + .ShowResults() + .Render(page => + { + page.Padding(25).Layers(layers => + { + layers.Layer().Image(Placeholders.Image); + layers.PrimaryLayer().Padding(25).Image("multilingual.png"); + }); + }); + } + [Test] public void Exception() { diff --git a/Source/QuestPDF.Examples/QuestPDF.Examples.csproj b/Source/QuestPDF.Examples/QuestPDF.Examples.csproj index a053de7..56e2ce5 100644 --- a/Source/QuestPDF.Examples/QuestPDF.Examples.csproj +++ b/Source/QuestPDF.Examples/QuestPDF.Examples.csproj @@ -32,6 +32,9 @@ PreserveNewest + + PreserveNewest + diff --git a/Source/QuestPDF.Examples/multilingual.png b/Source/QuestPDF.Examples/multilingual.png new file mode 100644 index 0000000000000000000000000000000000000000..4c07bf0bae71bff55bc534cdf5e86c4f0c0bfbce GIT binary patch literal 121930 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

>KM}WMfdmumYjkM_W=4 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 literal 0 HcmV?d00001 diff --git a/Source/QuestPDF/Drawing/DocumentGenerator.cs b/Source/QuestPDF/Drawing/DocumentGenerator.cs index 93e5574..696475e 100644 --- a/Source/QuestPDF/Drawing/DocumentGenerator.cs +++ b/Source/QuestPDF/Drawing/DocumentGenerator.cs @@ -236,7 +236,9 @@ namespace QuestPDF.Drawing return; image.TargetDpi ??= settings.RasterDpi; - image.TargetQuality ??= settings.ImageQuality; + image.ScalingQuality ??= settings.ImageScalingQuality; + image.ScalingStrategy ??= settings.ImageScalingStrategy; + image.CompressionQuality ??= settings.ImageCompressionQuality; }); } diff --git a/Source/QuestPDF/Drawing/PdfCanvas.cs b/Source/QuestPDF/Drawing/PdfCanvas.cs index 380a7c5..af19cfd 100644 --- a/Source/QuestPDF/Drawing/PdfCanvas.cs +++ b/Source/QuestPDF/Drawing/PdfCanvas.cs @@ -42,7 +42,7 @@ namespace QuestPDF.Drawing Modified = metadata.ModifiedDate, RasterDpi = documentSettings.RasterDpi, - EncodingQuality = documentSettings.ImageQuality, + EncodingQuality = documentSettings.ImageCompressionQuality.ToQualityValue(), PdfA = documentSettings.PdfA }; } diff --git a/Source/QuestPDF/Elements/Image.cs b/Source/QuestPDF/Elements/Image.cs index 74ba5a6..75e70c5 100644 --- a/Source/QuestPDF/Elements/Image.cs +++ b/Source/QuestPDF/Elements/Image.cs @@ -27,7 +27,8 @@ namespace QuestPDF.Elements if (DocumentImage == null) return; - Canvas.DrawImage(DocumentImage.SkImage, Position.Zero, availableSpace); + var image = DocumentImage.GetVersionOfSize(availableSpace); + Canvas.DrawImage(image, Position.Zero, availableSpace); } } } \ No newline at end of file diff --git a/Source/QuestPDF/Fluent/ImageExtensions.cs b/Source/QuestPDF/Fluent/ImageElementExtensions.cs similarity index 100% rename from Source/QuestPDF/Fluent/ImageExtensions.cs rename to Source/QuestPDF/Fluent/ImageElementExtensions.cs diff --git a/Source/QuestPDF/Fluent/ImageModelExtensions.cs b/Source/QuestPDF/Fluent/ImageModelExtensions.cs new file mode 100644 index 0000000..df0489c --- /dev/null +++ b/Source/QuestPDF/Fluent/ImageModelExtensions.cs @@ -0,0 +1,62 @@ +using QuestPDF.Drawing.Exceptions; +using QuestPDF.Infrastructure; + +namespace QuestPDF.Fluent +{ + public static class ImageModelExtensions + { + ///

+ /// When enabled, the image object is disposed automatically after document generation, and you don't need to call the Dispose method yourself. + /// + public static Image DisposeAfterDocumentGeneration(this Image image) + { + image.IsDocumentScoped = true; + return image; + } + + /// + /// When enabled, the library will not attempt to resize the image to fit the target DPI, nor save it with target image quality. + /// + public static Image UseOriginalImage(this Image image) + { + image.UseOriginalImage = true; + return image; + } + + /// + /// The DPI (pixels-per-inch) at which images and features without native PDF support will be rasterized. + /// A larger DPI would create a PDF that reflects the original intent with better fidelity, but it can make for larger PDF files too, which would use more memory while rendering, and it would be slower to be processed or sent online or to printer. + /// When generating images, this parameter also controls the resolution of the generated content. + /// Default value is 72. + /// + public static Image WithRasterDpi(this Image image, int dpi) + { + image.TargetDpi = dpi; + return image; + } + + /// + /// Encoding quality controls the trade-off between size and quality. + /// The value 101 corresponds to lossless encoding. + /// If this value is set to a value between 1 and 100, and the image is opaque, it will be encoded using the JPEG format with that quality setting. + /// The default value is 90 (very high quality). + /// + public static Image WithCompressionQuality(this Image image, ImageCompressionQuality quality) + { + image.CompressionQuality = quality; + return image; + } + + public static Image WithScalingQuality(this Image image, ImageScalingQuality strategy) + { + image.ScalingQuality = strategy; + return image; + } + + public static Image WithScalingStrategy(this Image image, ImageScalingStrategy strategy) + { + image.ScalingStrategy = strategy; + return image; + } + } +} \ No newline at end of file diff --git a/Source/QuestPDF/Helpers/Helpers.cs b/Source/QuestPDF/Helpers/Helpers.cs index 668030c..2ba0a3b 100644 --- a/Source/QuestPDF/Helpers/Helpers.cs +++ b/Source/QuestPDF/Helpers/Helpers.cs @@ -6,6 +6,7 @@ using System.Reflection; using System.Text.RegularExpressions; using QuestPDF.Drawing; using QuestPDF.Infrastructure; +using SkiaSharp; namespace QuestPDF.Helpers { @@ -60,5 +61,31 @@ namespace QuestPDF.Helpers { return size.Width < 0f || size.Height < 0f; } + + internal static int ToQualityValue(this ImageCompressionQuality quality) + { + return quality switch + { + ImageCompressionQuality.Best => 100, + ImageCompressionQuality.VeryHigh => 90, + ImageCompressionQuality.High => 80, + ImageCompressionQuality.Medium => 60, + ImageCompressionQuality.Low => 40, + ImageCompressionQuality.VeryLow => 20, + _ => throw new ArgumentOutOfRangeException(nameof(quality), quality, null) + }; + } + + internal static SKFilterQuality ToFilterQuality(this ImageScalingQuality quality) + { + return quality switch + { + ImageScalingQuality.Low => SKFilterQuality.None, + ImageScalingQuality.Medium => SKFilterQuality.Low, + ImageScalingQuality.High => SKFilterQuality.Medium, + ImageScalingQuality.Best => SKFilterQuality.High, + _ => throw new ArgumentOutOfRangeException(nameof(quality), quality, null) + }; + } } } \ No newline at end of file diff --git a/Source/QuestPDF/Infrastructure/DocumentSettings.cs b/Source/QuestPDF/Infrastructure/DocumentSettings.cs index 1419c94..6a4019b 100644 --- a/Source/QuestPDF/Infrastructure/DocumentSettings.cs +++ b/Source/QuestPDF/Infrastructure/DocumentSettings.cs @@ -1,6 +1,4 @@ -using ImageQualityEnum = QuestPDF.Infrastructure.ImageQuality; - -namespace QuestPDF.Infrastructure +namespace QuestPDF.Infrastructure { public class DocumentSettings { @@ -19,7 +17,12 @@ namespace QuestPDF.Infrastructure /// If this value is set to a value between 1 and 100, and the image is opaque, it will be encoded using the JPEG format with that quality setting. /// The default value is 90 (very high quality). /// - public int ImageQuality { get; set; } = (int)ImageQualityEnum.VeryHigh; + public ImageCompressionQuality ImageCompressionQuality { get; set; } = ImageCompressionQuality.VeryHigh; + + // TODO: add comments + public ImageScalingStrategy ImageScalingStrategy { get; set; } = ImageScalingStrategy.ScaleOnlyToSignificantlySmallerResolution; + + public ImageScalingQuality ImageScalingQuality { get; set; } = ImageScalingQuality.High; /// /// The DPI (pixels-per-inch) at which images and features without native PDF support will be rasterized. @@ -28,7 +31,7 @@ namespace QuestPDF.Infrastructure /// Default value is 72. /// public int RasterDpi { get; set; } = DefaultRasterDpi; - + public ContentDirection ContentDirection { get; set; } = ContentDirection.LeftToRight; public static DocumentSettings Default => new DocumentSettings(); diff --git a/Source/QuestPDF/Infrastructure/IDocument.cs b/Source/QuestPDF/Infrastructure/IDocument.cs index 79dab3f..f149fea 100644 --- a/Source/QuestPDF/Infrastructure/IDocument.cs +++ b/Source/QuestPDF/Infrastructure/IDocument.cs @@ -4,7 +4,7 @@ namespace QuestPDF.Infrastructure { public interface IDocument { -#if NETCOREAPP2_1_OR_GREATER +#if NETCOREAPP3_0_OR_GREATER public DocumentMetadata GetMetadata() => DocumentMetadata.Default; public DocumentSettings GetSettings() => DocumentSettings.Default; #else diff --git a/Source/QuestPDF/Infrastructure/Image.cs b/Source/QuestPDF/Infrastructure/Image.cs index 496ba65..32e4945 100644 --- a/Source/QuestPDF/Infrastructure/Image.cs +++ b/Source/QuestPDF/Infrastructure/Image.cs @@ -1,21 +1,30 @@ using System; +using System.Collections.Generic; +using System.Diagnostics; using System.IO; using QuestPDF.Drawing.Exceptions; +using QuestPDF.Helpers; using SkiaSharp; namespace QuestPDF.Infrastructure { public class Image : IDisposable { - internal SKImage SkImage { get; } - - internal int? TargetDpi { get; set; } - internal int? TargetQuality { get; set; } - internal bool IsDocumentScoped { get; set; } - + private SKImage SkImage { get; } public int Width => SkImage.Width; public int Height => SkImage.Height; + internal List<(Size size, SKImage image)>? ScaledImageCache { get; set; } + + internal bool IsDocumentScoped { get; set; } + internal bool UseOriginalImage { get; set; } + internal int? TargetDpi { get; set; } + internal ImageCompressionQuality? CompressionQuality { get; set; } + internal ImageScalingQuality? ScalingQuality { get; set; } + internal ImageScalingStrategy? ScalingStrategy { get; set; } + + private const float ImageSizeSimilarityToleranceMax = 0.75f; + private Image(SKImage image) { SkImage = image; @@ -24,48 +33,83 @@ namespace QuestPDF.Infrastructure public void Dispose() { SkImage.Dispose(); - } - - #region Fluent API + } - /// - /// When enabled, the image object is disposed automatically after document generation, and you don't need to call the Dispose method yourself. - /// - public Image DisposeAfterDocumentGeneration() - { - IsDocumentScoped = true; - return this; - } + #region Scaling Image - /// - /// The DPI (pixels-per-inch) at which images and features without native PDF support will be rasterized. - /// A larger DPI would create a PDF that reflects the original intent with better fidelity, but it can make for larger PDF files too, which would use more memory while rendering, and it would be slower to be processed or sent online or to printer. - /// When generating images, this parameter also controls the resolution of the generated content. - /// Default value is 72. - /// - public Image WithRasterDpi(int dpi) + internal SKImage GetVersionOfSize(Size availableAreaSize) { - TargetDpi = dpi; - return this; - } + if (UseOriginalImage) + return SkImage; - /// - /// Encoding quality controls the trade-off between size and quality. - /// The value 101 corresponds to lossless encoding. - /// If this value is set to a value between 1 and 100, and the image is opaque, it will be encoded using the JPEG format with that quality setting. - /// The default value is 90 (very high quality). - /// - public Image WithQuality(int value) - { - if (value is not (>= 1 and <= 101)) - throw new DocumentComposeException("Image quality must be between 1 and 101."); + var imageResolution = new Size(SkImage.Width, SkImage.Height); + var targetResolution = GetTargetResolution(ScalingStrategy.Value, imageResolution, availableAreaSize, TargetDpi ?? DocumentSettings.DefaultRasterDpi); - TargetQuality = value; - return this; + return ScaleAndCompressImage(SkImage, targetResolution, ScalingQuality.Value, CompressionQuality.Value); + } + + private static Size GetTargetResolution(ImageScalingStrategy scalingStrategy, Size imageResolution, Size availableAreaSize, int targetDpi) + { + if (scalingStrategy == ImageScalingStrategy.Never) + return imageResolution; + + if (scalingStrategy == ImageScalingStrategy.Always) + return availableAreaSize; + + var scalingFactor = targetDpi / DocumentSettings.DefaultRasterDpi; + var targetResolution = new Size(availableAreaSize.Width * scalingFactor, availableAreaSize.Height * scalingFactor); + + var isSignificantlySmaller = IsImageSignificantlySmallerThanDrawingArea(imageResolution, targetResolution); + + if (scalingStrategy == ImageScalingStrategy.ScaleOnlyToSignificantlySmallerResolution && isSignificantlySmaller) + return targetResolution; + + var isSmaller = IsImageSmallerThanDrawingArea(imageResolution, targetResolution); + + if (scalingStrategy == ImageScalingStrategy.ScaleOnlyToSmallerResolution && isSmaller) + return targetResolution; + + return imageResolution; + } + + private static SKImage CompressImage(SKImage image, ImageCompressionQuality compressionQuality) + { + var targetFormat = image.Info.IsOpaque + ? SKEncodedImageFormat.Png + : SKEncodedImageFormat.Jpeg; + + if (targetFormat == SKEncodedImageFormat.Png) + compressionQuality = ImageCompressionQuality.Best; + + var data = image.Encode(targetFormat, compressionQuality.ToQualityValue()); + return SKImage.FromEncodedData(data); } - #endregion + private static SKImage ScaleAndCompressImage(SKImage image, Size targetResolution, ImageScalingQuality scalingQuality, ImageCompressionQuality compressionQuality) + { + var imageInfo = new SKImageInfo((int)targetResolution.Width, (int)targetResolution.Height); + + using var resultImage = SKImage.Create(imageInfo); + image.ScalePixels(resultImage.PeekPixels(), scalingQuality.ToFilterQuality()); + + return CompressImage(resultImage, compressionQuality); + } + private static bool IsImageSmallerThanDrawingArea(Size imageResolution, Size targetResolution) + { + return imageResolution.Width < targetResolution.Width || imageResolution.Height < targetResolution.Height; + } + + private static bool IsImageSignificantlySmallerThanDrawingArea(Size imageResolution, Size targetResolution, float sizeSimilarityThreshold = ImageSizeSimilarityToleranceMax) + { + var widthRatio = imageResolution.Width / targetResolution.Width; + var heightRatio = imageResolution.Height / targetResolution.Height; + + return widthRatio < sizeSimilarityThreshold && heightRatio < sizeSimilarityThreshold; + } + + #endregion + #region public constructors internal static Image FromSkImage(SKImage image) diff --git a/Source/QuestPDF/Infrastructure/ImageQuality.cs b/Source/QuestPDF/Infrastructure/ImageCompressionQuality.cs similarity index 72% rename from Source/QuestPDF/Infrastructure/ImageQuality.cs rename to Source/QuestPDF/Infrastructure/ImageCompressionQuality.cs index 07772e4..b833a62 100644 --- a/Source/QuestPDF/Infrastructure/ImageQuality.cs +++ b/Source/QuestPDF/Infrastructure/ImageCompressionQuality.cs @@ -1,40 +1,35 @@ namespace QuestPDF.Infrastructure { - public enum ImageQuality + public enum ImageCompressionQuality { - /// - /// PNG format with alpha support - /// - Lossless = 101, - /// /// JPEG format with compression set to 100 out of 100 /// - Max = 100, + Best, /// /// JPEG format with compression set to 90 out of 100 /// - VeryHigh = 90, + VeryHigh, /// /// JPEG format with compression set to 80 out of 100 /// - High = 80, + High, /// /// JPEG format with compression set to 60 out of 100 /// - Medium = 60, + Medium, /// /// JPEG format with compression set to 40 out of 100 /// - Low = 40, + Low, /// /// JPEG format with compression set to 20 out of 100 /// - VeryLow = 20 + VeryLow } } \ No newline at end of file diff --git a/Source/QuestPDF/Infrastructure/ImageScalingQuality.cs b/Source/QuestPDF/Infrastructure/ImageScalingQuality.cs new file mode 100644 index 0000000..7b1e420 --- /dev/null +++ b/Source/QuestPDF/Infrastructure/ImageScalingQuality.cs @@ -0,0 +1,15 @@ +namespace QuestPDF.Infrastructure +{ + // https://chromium.googlesource.com/skia/+/master/include/core/SkFilterQuality.h + public enum ImageScalingQuality + { + // TODO: add comments + Low, + + Medium, + + High, + + Best + } +} \ No newline at end of file diff --git a/Source/QuestPDF/Infrastructure/ImageScalingStrategy.cs b/Source/QuestPDF/Infrastructure/ImageScalingStrategy.cs new file mode 100644 index 0000000..2a873c4 --- /dev/null +++ b/Source/QuestPDF/Infrastructure/ImageScalingStrategy.cs @@ -0,0 +1,11 @@ +namespace QuestPDF.Infrastructure +{ + public enum ImageScalingStrategy + { + // TODO: add comments + Always, + ScaleOnlyToSmallerResolution, + ScaleOnlyToSignificantlySmallerResolution, + Never + } +} \ No newline at end of file