diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Icc/IccProfileConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Icc/IccProfileConverter.cs
index 8676f4afb9..51c34e4c79 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Icc/IccProfileConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Icc/IccProfileConverter.cs
@@ -22,7 +22,7 @@ internal static class IccProfileConverter
/// The image to convert.
/// The input ICC profile.
/// The output ICC profile.
- public static void Convert(Image image, IccProfile? inputIccProfile, IccProfile? outputIccProfile)
+ public static void Convert(Image image, IccProfile inputIccProfile, IccProfile outputIccProfile)
=> image.AcceptVisitor(new IccProfileConverterVisitor(inputIccProfile, outputIccProfile));
///
@@ -32,14 +32,9 @@ internal static class IccProfileConverter
/// The image to convert.
/// The input ICC profile.
/// The output ICC profile.
- public static void Convert(Image image, IccProfile? inputIccProfile, IccProfile? outputIccProfile)
+ public static void Convert(Image image, IccProfile inputIccProfile, IccProfile outputIccProfile)
where TPixel : unmanaged, IPixel
{
- if (inputIccProfile is null || outputIccProfile is null)
- {
- return;
- }
-
IccDataToPcsConverter converterDataToPcs = new(inputIccProfile);
IccPcsToDataConverter converterPcsToData = new(outputIccProfile);
Configuration configuration = image.GetConfiguration();
@@ -68,10 +63,10 @@ internal static class IccProfileConverter
private readonly struct IccProfileConverterVisitor : IImageVisitor
{
- private readonly IccProfile? inputIccProfile;
- private readonly IccProfile? outputIccProfile;
+ private readonly IccProfile inputIccProfile;
+ private readonly IccProfile outputIccProfile;
- public IccProfileConverterVisitor(IccProfile? inputIccProfile, IccProfile? outputIccProfile)
+ public IccProfileConverterVisitor(IccProfile inputIccProfile, IccProfile outputIccProfile)
{
this.inputIccProfile = inputIccProfile;
this.outputIccProfile = outputIccProfile;
diff --git a/src/ImageSharp/Formats/ImageDecoder.cs b/src/ImageSharp/Formats/ImageDecoder.cs
index 30a87acd65..92eef0e9ac 100644
--- a/src/ImageSharp/Formats/ImageDecoder.cs
+++ b/src/ImageSharp/Formats/ImageDecoder.cs
@@ -5,6 +5,7 @@
using SixLabors.ImageSharp.ColorSpaces.Conversion.Icc;
using SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.Icc;
using SixLabors.ImageSharp.IO;
+using SixLabors.ImageSharp.Metadata.Profiles.Icc;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
@@ -157,7 +158,11 @@ public abstract class ImageDecoder : IImageDecoder
return;
}
- IccProfileConverter.Convert(image, image.Metadata?.IccProfile, SrgbV4Profile.GetProfile());
+ IccProfile profile = image.Metadata?.IccProfile;
+ if (profile is not null)
+ {
+ IccProfileConverter.Convert(image, profile, SrgbV4Profile.GetProfile());
+ }
}
///