Automated image compression fixes
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user