Automated image compression fixes

This commit is contained in:
MarcinZiabek
2023-05-15 01:12:09 +02:00
parent 6fe6e7ee41
commit 3606bc9e79
2 changed files with 25 additions and 1 deletions
+22
View File
@@ -95,6 +95,28 @@ namespace QuestPDF.UnitTests
(documentWithMultipleImagesSize / (float)documentWithSingleImageSize).Should().BeInRange(9.9f, 10);
(documentWithSingleImageUsedMultipleTimesSize / (float)documentWithSingleImageSize).Should().BeInRange(1f, 1.05f);
}
[Test]
public void ImageCompressionHasImpactOnDocumentSize()
{
var photo = File.ReadAllBytes("Resources/photo.jpg");
var veryLowCompressionSize = GetDocumentSize(container => container.Image(photo).WithCompressionQuality(ImageCompressionQuality.VeryLow));
var bestCompressionSize = GetDocumentSize(container => container.Image(photo).WithCompressionQuality(ImageCompressionQuality.Best));
(bestCompressionSize / (float)veryLowCompressionSize).Should().BeGreaterThan(25);
}
[Test]
public void TargetDpiHasImpactOnDocumentSize()
{
var photo = File.ReadAllBytes("Resources/photo.jpg");
var lowDpiSize = GetDocumentSize(container => container.Image(photo).WithRasterDpi(12));
var highDpiSize = GetDocumentSize(container => container.Image(photo).WithRasterDpi(144));
(highDpiSize / (float)lowDpiSize).Should().BeGreaterThan(40);
}
private static int GetDocumentSize(Action<IContainer> container)
{
+3 -1
View File
@@ -94,7 +94,9 @@ namespace QuestPDF.Helpers
if (image.Width == targetResolution.Width && image.Height == targetResolution.Height)
return CompressImage(image, compressionQuality);
using var resultImage = SKImage.Create(image.Info);
var imageInfo = new SKImageInfo(targetResolution.Width, targetResolution.Height, image.Info.ColorType, image.Info.AlphaType, image.Info.ColorSpace);
using var resultImage = SKImage.Create(imageInfo);
image.ScalePixels(resultImage.PeekPixels(), SKFilterQuality.Medium);
return CompressImage(resultImage, compressionQuality);