Skip to content

Commit

Permalink
Workaround for missing PNG compression in SkiaSharp 3.x
Browse files Browse the repository at this point in the history
  • Loading branch information
sungaila committed Sep 21, 2024
1 parent 5a59bee commit 512c9f6
Show file tree
Hide file tree
Showing 10 changed files with 72 additions and 28 deletions.
5 changes: 3 additions & 2 deletions src/PDFtoImage/Conversion.Base64.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using SkiaSharp;
using PDFtoImage.Internals;
using SkiaSharp;
using System;
using System.Collections.Generic;
using System.Drawing;
Expand Down Expand Up @@ -294,7 +295,7 @@ internal static void SaveImpl(Stream imageStream, SKEncodedImageFormat format, s
throw new ArgumentNullException(nameof(imageStream));

using var bitmap = ToImage(pdfAsBase64String, page, password, options);
bitmap.Encode(imageStream, format, 100);
bitmap.EncodeExt(imageStream, format, 100);
}
#endif
}
Expand Down
5 changes: 3 additions & 2 deletions src/PDFtoImage/Conversion.ByteArray.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using SkiaSharp;
using PDFtoImage.Internals;
using SkiaSharp;
using System;
using System.Collections.Generic;
using System.Drawing;
Expand Down Expand Up @@ -324,7 +325,7 @@ internal static void SaveImpl(Stream imageStream, SKEncodedImageFormat format, b
throw new ArgumentNullException(nameof(imageStream));

using var bitmap = ToImage(pdfAsByteArray, page, password, options);
bitmap.Encode(imageStream, format, 100);
bitmap.EncodeExt(imageStream, format, 100);
}
#endif
}
Expand Down
6 changes: 3 additions & 3 deletions src/PDFtoImage/Conversion.Deprecated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,7 @@ internal static void SaveImpl(string filename, SKEncodedImageFormat format, Stre
internal static void SaveImpl(Stream stream, SKEncodedImageFormat format, Stream pdfStream, bool leaveOpen = false, string? password = null, int page = 0, RenderOptions options = default)
{
using var bitmap = ToImage(pdfStream, leaveOpen, password, page, options);
bitmap.Encode(stream, format, 100);
bitmap.EncodeExt(stream, format, 100);

Check warning on line 459 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / Build

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'

Check warning on line 459 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / Build

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'

Check warning on line 459 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / Build

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'

Check warning on line 459 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / Build

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'

Check warning on line 459 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / SonarCloud

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'

Check warning on line 459 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / SonarCloud

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'

Check warning on line 459 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / Build

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'

Check warning on line 459 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / Build

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'

Check warning on line 459 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / Build

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'

Check warning on line 459 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / Build

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'
}

#if NET6_0_OR_GREATER
Expand All @@ -480,7 +480,7 @@ internal static void SaveImpl(Stream imageStream, SKEncodedImageFormat format, b
throw new ArgumentNullException(nameof(imageStream));

using var bitmap = ToImage(pdfAsByteArray, password, page, options);
bitmap.Encode(imageStream, format, 100);
bitmap.EncodeExt(imageStream, format, 100);

Check warning on line 483 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / Build

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'

Check warning on line 483 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / Build

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'

Check warning on line 483 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / Build

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'

Check warning on line 483 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / SonarCloud

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'

Check warning on line 483 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / SonarCloud

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'

Check warning on line 483 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / Build

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'

Check warning on line 483 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / Build

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'

Check warning on line 483 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / Build

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'
}

#if NET6_0_OR_GREATER
Expand All @@ -504,7 +504,7 @@ internal static void SaveImpl(Stream imageStream, SKEncodedImageFormat format, s
throw new ArgumentNullException(nameof(imageStream));

using var bitmap = ToImage(pdfAsBase64String, password, page, options);
bitmap.Encode(imageStream, format, 100);
bitmap.EncodeExt(imageStream, format, 100);

Check warning on line 507 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / Build

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'

Check warning on line 507 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / Build

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'

Check warning on line 507 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / Build

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'

Check warning on line 507 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / SonarCloud

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'

Check warning on line 507 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / Build

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'

Check warning on line 507 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / Build

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'

Check warning on line 507 in src/PDFtoImage/Conversion.Deprecated.cs

View workflow job for this annotation

GitHub Actions / Build

'SKBitmapExtensions.EncodeExt(SKBitmap, Stream, SKEncodedImageFormat, int)' is obsolete: 'This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.'
}
}
}
2 changes: 1 addition & 1 deletion src/PDFtoImage/Conversion.Stream.cs
Original file line number Diff line number Diff line change
Expand Up @@ -355,7 +355,7 @@ internal static void SaveImpl(string filename, SKEncodedImageFormat format, Stre
internal static void SaveImpl(Stream stream, SKEncodedImageFormat format, Stream pdfStream, Index page, bool leaveOpen = false, string? password = null, RenderOptions options = default)
{
using var bitmap = ToImage(pdfStream, page, leaveOpen, password, options);
bitmap.Encode(stream, format, 100);
bitmap.EncodeExt(stream, format, 100);
}
#endif
}
Expand Down
28 changes: 28 additions & 0 deletions src/PDFtoImage/Internals/SKBitmapExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
using SkiaSharp;
using System;
using System.IO;

namespace PDFtoImage.Internals
{
internal static class SKBitmapExtensions
{
[Obsolete("This is a workaround for the missing PNG compression in SkiaSharp 3.x. Remove this once SkiaSharp is fixed.")]

Check warning on line 9 in src/PDFtoImage/Internals/SKBitmapExtensions.cs

View workflow job for this annotation

GitHub Actions / SonarCloud

Do not forget to remove this deprecated code someday. (https://rules.sonarsource.com/csharp/RSPEC-1133)
public static bool EncodeExt(this SKBitmap bitmap, Stream dst, SKEncodedImageFormat format, int quality)
{
if (format == SKEncodedImageFormat.Png)
{
using var pixmap = new SKPixmap(bitmap.Info, bitmap.GetPixels());
using var data = pixmap.Encode(SKPngEncoderOptions.Default);

if (data == null)
return false;

data.SaveTo(dst);

return true;
}

return bitmap.Encode(dst, format, quality);
}
}
}
10 changes: 10 additions & 0 deletions src/PDFtoImage/PDFtoImage.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,16 @@
<PackageReference Include="Sungaila.PDFium.BlazorWebAssembly" Version="131.0.6728" PrivateAssets="analyzers" />
</ItemGroup>

<!-- allow Tests project to access internals -->
<ItemGroup>
<AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleToAttribute">
<_Parameter1>PDFtoImage.Tests</_Parameter1>
</AssemblyAttribute>
<AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleToAttribute">
<_Parameter1>PDFtoImage.WebConverter</_Parameter1>
</AssemblyAttribute>
</ItemGroup>

<Import Project="PDFtoImage.PropertiesSigning.targets" />
<Import Project="PDFtoImage.CodeSigning.targets" />
<Import Project="PDFtoImage.PackageSigning.targets" />
Expand Down
11 changes: 6 additions & 5 deletions src/Tests/AspectRatioTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using PDFtoImage.Internals;
using PDFtoImage.Tests;
using System.IO;
using static PDFtoImage.Conversion;
Expand Down Expand Up @@ -352,7 +353,7 @@ public void IgnoreDpi(string fileName, int? width = null, int? height = null, bo
{
using var outputStream = CreateOutputStream(expectedPath);

ToImage(inputStream, true, options: new(Dpi: i, Width: width, Height: height, WithAnnotations: true, WithFormFill: true, WithAspectRatio: withAspectRatio)).Encode(outputStream, SkiaSharp.SKEncodedImageFormat.Jpeg, 100);
ToImage(inputStream, true, options: new(Dpi: i, Width: width, Height: height, WithAnnotations: true, WithFormFill: true, WithAspectRatio: withAspectRatio)).EncodeExt(outputStream, SkiaSharp.SKEncodedImageFormat.Jpeg, 100);
CompareStreams(expectedPath, outputStream);
}
}
Expand All @@ -375,8 +376,8 @@ public void IgnoreAspectRatio(string fileName, int width, int height)
using var outputStream1 = CreateOutputStream(expectedPath);
using var outputStream2 = CreateOutputStream(expectedPath);

ToImage(inputStream, true, options: new(Width: width, Height: height, WithAnnotations: true, WithFormFill: true, WithAspectRatio: false)).Encode(outputStream1, SkiaSharp.SKEncodedImageFormat.Jpeg, 100);
ToImage(inputStream, true, options: new(Width: width, Height: height, WithAnnotations: true, WithFormFill: true, WithAspectRatio: true)).Encode(outputStream2, SkiaSharp.SKEncodedImageFormat.Jpeg, 100);
ToImage(inputStream, true, options: new(Width: width, Height: height, WithAnnotations: true, WithFormFill: true, WithAspectRatio: false)).EncodeExt(outputStream1, SkiaSharp.SKEncodedImageFormat.Jpeg, 100);
ToImage(inputStream, true, options: new(Width: width, Height: height, WithAnnotations: true, WithFormFill: true, WithAspectRatio: true)).EncodeExt(outputStream2, SkiaSharp.SKEncodedImageFormat.Jpeg, 100);

CompareStreams(expectedPath, outputStream1);
CompareStreams(expectedPath, outputStream2);
Expand All @@ -400,8 +401,8 @@ public void IgnoreAspectRatioWithDpi(string fileName, int dpi)
using var outputStream1 = CreateOutputStream(expectedPath);
using var outputStream2 = CreateOutputStream(expectedPath);

ToImage(inputStream, true, options: new(Dpi: dpi, WithAnnotations: true, WithFormFill: true, WithAspectRatio: false)).Encode(outputStream1, SkiaSharp.SKEncodedImageFormat.Jpeg, 100);
ToImage(inputStream, true, options: new(Dpi: dpi, WithAnnotations: true, WithFormFill: true, WithAspectRatio: true)).Encode(outputStream2, SkiaSharp.SKEncodedImageFormat.Jpeg, 100);
ToImage(inputStream, true, options: new(Dpi: dpi, WithAnnotations: true, WithFormFill: true, WithAspectRatio: false)).EncodeExt(outputStream1, SkiaSharp.SKEncodedImageFormat.Jpeg, 100);
ToImage(inputStream, true, options: new(Dpi: dpi, WithAnnotations: true, WithFormFill: true, WithAspectRatio: true)).EncodeExt(outputStream2, SkiaSharp.SKEncodedImageFormat.Jpeg, 100);

CompareStreams(expectedPath, outputStream1);
CompareStreams(expectedPath, outputStream2);
Expand Down
17 changes: 9 additions & 8 deletions src/Tests/BatchingTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using PDFtoImage.Internals;
using PDFtoImage.Tests;
using SkiaSharp;
using System;
Expand Down Expand Up @@ -62,7 +63,7 @@ public void ToImagesWithSelectionOdd()
{
var expectedPath = Path.Combine("..", "Assets", "Expected", GetPlatformAsString(), $"Wikimedia_Commons_web_{selection[i]}.png");
using var outputStream = CreateOutputStream(expectedPath);
bitmap.Encode(outputStream, SKEncodedImageFormat.Png, 100);
bitmap.EncodeExt(outputStream, SKEncodedImageFormat.Png, 100);

CompareStreams(expectedPath, outputStream);
i++;
Expand Down Expand Up @@ -150,7 +151,7 @@ public void ToImagesWithRangeAll()
{
var expectedPath = Path.Combine("..", "Assets", "Expected", GetPlatformAsString(), $"Wikimedia_Commons_web_{i}.png");
using var outputStream = CreateOutputStream(expectedPath);
bitmap.Encode(outputStream, SKEncodedImageFormat.Png, 100);
bitmap.EncodeExt(outputStream, SKEncodedImageFormat.Png, 100);

CompareStreams(expectedPath, outputStream);
i++;
Expand All @@ -170,7 +171,7 @@ public void ToImagesWithRangeSecondHalf()
{
var expectedPath = Path.Combine("..", "Assets", "Expected", GetPlatformAsString(), $"Wikimedia_Commons_web_{i}.png");
using var outputStream = CreateOutputStream(expectedPath);
bitmap.Encode(outputStream, SKEncodedImageFormat.Png, 100);
bitmap.EncodeExt(outputStream, SKEncodedImageFormat.Png, 100);

CompareStreams(expectedPath, outputStream);
i++;
Expand All @@ -190,7 +191,7 @@ public void ToImagesWithSelectionEven()
{
var expectedPath = Path.Combine("..", "Assets", "Expected", GetPlatformAsString(), $"Wikimedia_Commons_web_{selection[i]}.png");
using var outputStream = CreateOutputStream(expectedPath);
bitmap.Encode(outputStream, SKEncodedImageFormat.Png, 100);
bitmap.EncodeExt(outputStream, SKEncodedImageFormat.Png, 100);

CompareStreams(expectedPath, outputStream);
i++;
Expand All @@ -210,7 +211,7 @@ public async Task ToImagesWithRangeAllAsync()
{
var expectedPath = Path.Combine("..", "Assets", "Expected", GetPlatformAsString(), $"Wikimedia_Commons_web_{i}.png");
using var outputStream = CreateOutputStream(expectedPath);
bitmap.Encode(outputStream, SKEncodedImageFormat.Png, 100);
bitmap.EncodeExt(outputStream, SKEncodedImageFormat.Png, 100);

CompareStreams(expectedPath, outputStream);
i++;
Expand All @@ -230,7 +231,7 @@ public async Task ToImagesWithRangeSecondHalfAsync()
{
var expectedPath = Path.Combine("..", "Assets", "Expected", GetPlatformAsString(), $"Wikimedia_Commons_web_{i}.png");
using var outputStream = CreateOutputStream(expectedPath);
bitmap.Encode(outputStream, SKEncodedImageFormat.Png, 100);
bitmap.EncodeExt(outputStream, SKEncodedImageFormat.Png, 100);

CompareStreams(expectedPath, outputStream);
i++;
Expand All @@ -250,7 +251,7 @@ public async Task ToImagesWithSelectionEvenAsync()
{
var expectedPath = Path.Combine("..", "Assets", "Expected", GetPlatformAsString(), $"Wikimedia_Commons_web_{selection[i]}.png");
using var outputStream = CreateOutputStream(expectedPath);
bitmap.Encode(outputStream, SKEncodedImageFormat.Png, 100);
bitmap.EncodeExt(outputStream, SKEncodedImageFormat.Png, 100);

CompareStreams(expectedPath, outputStream);
i++;
Expand All @@ -270,7 +271,7 @@ public async Task ToImagesWithSelectionOddAsync()
{
var expectedPath = Path.Combine("..", "Assets", "Expected", GetPlatformAsString(), $"Wikimedia_Commons_web_{selection[i]}.png");
using var outputStream = CreateOutputStream(expectedPath);
bitmap.Encode(outputStream, SKEncodedImageFormat.Png, 100);
bitmap.EncodeExt(outputStream, SKEncodedImageFormat.Png, 100);

CompareStreams(expectedPath, outputStream);
i++;
Expand Down
13 changes: 7 additions & 6 deletions src/Tests/ComparisonTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using PDFtoImage.Internals;
using PDFtoImage.Tests;
using SkiaSharp;
using System;
Expand Down Expand Up @@ -82,7 +83,7 @@ public void SaveWebpPages(bool withAnnotations = false)
var expectedPath = Path.Combine("..", "Assets", "Expected", GetPlatformAsString(), $"Wikimedia_Commons_web_{page}{(withAnnotations ? "_ANNOT" : string.Empty)}.webp");

using var outputStream = CreateOutputStream(expectedPath);
image.Encode(outputStream, SKEncodedImageFormat.Webp, 100);
image.EncodeExt(outputStream, SKEncodedImageFormat.Webp, 100);

CompareStreams(expectedPath, outputStream);

Expand All @@ -105,7 +106,7 @@ public async Task SaveWebpPagesAsync(bool withAnnotations = false)
var expectedPath = Path.Combine("..", "Assets", "Expected", GetPlatformAsString(), $"Wikimedia_Commons_web_{page}{(withAnnotations ? "_ANNOT" : string.Empty)}.webp");

using var outputStream = CreateOutputStream(expectedPath);
image.Encode(outputStream, SKEncodedImageFormat.Webp, 100);
image.EncodeExt(outputStream, SKEncodedImageFormat.Webp, 100);

CompareStreams(expectedPath, outputStream);

Expand Down Expand Up @@ -181,7 +182,7 @@ public void SavePngPages(bool withAnnotations = false)
var expectedPath = Path.Combine("..", "Assets", "Expected", GetPlatformAsString(), $"Wikimedia_Commons_web_{page}{(withAnnotations ? "_ANNOT" : string.Empty)}.png");

using var outputStream = CreateOutputStream(expectedPath);
image.Encode(outputStream, SKEncodedImageFormat.Png, 100);
image.EncodeExt(outputStream, SKEncodedImageFormat.Png, 100);

CompareStreams(expectedPath, outputStream);

Expand All @@ -204,7 +205,7 @@ public async Task SavePngPagesAsync(bool withAnnotations = false)
var expectedPath = Path.Combine("..", "Assets", "Expected", GetPlatformAsString(), $"Wikimedia_Commons_web_{page}{(withAnnotations ? "_ANNOT" : string.Empty)}.png");

using var outputStream = CreateOutputStream(expectedPath);
image.Encode(outputStream, SKEncodedImageFormat.Png, 100);
image.EncodeExt(outputStream, SKEncodedImageFormat.Png, 100);

CompareStreams(expectedPath, outputStream);

Expand Down Expand Up @@ -280,7 +281,7 @@ public void SaveJpegPages(bool withAnnotations = false)
var expectedPath = Path.Combine("..", "Assets", "Expected", GetPlatformAsString(), $"Wikimedia_Commons_web_{page}{(withAnnotations ? "_ANNOT" : string.Empty)}.jpg");

using var outputStream = CreateOutputStream(expectedPath);
image.Encode(outputStream, SKEncodedImageFormat.Jpeg, 100);
image.EncodeExt(outputStream, SKEncodedImageFormat.Jpeg, 100);

CompareStreams(expectedPath, outputStream);

Expand All @@ -303,7 +304,7 @@ public async Task SaveJpegPagesAsync(bool withAnnotations = false)
var expectedPath = Path.Combine("..", "Assets", "Expected", GetPlatformAsString(), $"Wikimedia_Commons_web_{page}{(withAnnotations ? "_ANNOT" : string.Empty)}.jpg");

using var outputStream = CreateOutputStream(expectedPath);
image.Encode(outputStream, SKEncodedImageFormat.Jpeg, 100);
image.EncodeExt(outputStream, SKEncodedImageFormat.Jpeg, 100);

CompareStreams(expectedPath, outputStream);

Expand Down
3 changes: 2 additions & 1 deletion src/WebConverter/Pages/Index.razor.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Components.Forms;
using Microsoft.Extensions.Logging;
using Microsoft.JSInterop;
using PDFtoImage.Internals;
using PDFtoImage.WebConverter.Models;
using SkiaSharp;
using System;
Expand Down Expand Up @@ -182,7 +183,7 @@ await Task.Factory.StartNew(() =>
DpiRelativeToBounds: Model.DpiRelativeToBounds
)
);
encodeSuccess = bitmap!.Encode(Model.Output, Model.Format, Model.Quality);
encodeSuccess = bitmap!.EncodeExt(Model.Output, Model.Format, Model.Quality);
}, TaskCreationOptions.LongRunning);

if (!encodeSuccess)
Expand Down

0 comments on commit 512c9f6

Please sign in to comment.