SixLabors / SixLabors/ImageSharp

TIFF CMYK ICC Profile Color Rendering Issue

Open
#3,198 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

needs triage
Dominant language
C#
Stars
8k
Forks
899
Avg merge
1d 5h
Merged PRs (30d)
7

Description

Prerequisites
  • I have written a descriptive issue title
  • I have verified that I am running the latest version of ImageSharp
  • I have verified if the problem exist in both DEBUG and RELEASE mode
  • I have searched open and closed issues to ensure it has not already been reported
ImageSharp version

4.1.2

Other ImageSharp packages and versions
  • SixLabors.ImageSharp.Drawing 3.1.0 - SixLabors.ImageSharp.Web 4.0.1
Environment (Operating system, version and so on)

Windows 11

.NET Framework version

.NET 10.0

Description

When loading a TIFF image with an embedded CMYK ICC profile using ColorProfileHandling.Preserve, the colors are rendered incorrectly and do not match the original image. The preserved version shows noticeably different colors compared to the original, while the converted version appears to produce more accurate results.

This suggests an issue with how ImageSharp handles CMYK ICC profile preservation when converting to the display color space (sRGB). The color transformation is not producing the expected visual output that matches the original image.

Steps to Reproduce
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats;

const string inputPath = "cmyk_image.tiff";

using (Image image = Image.Load(
    new DecoderOptions
    {
        ColorProfileHandling = ColorProfileHandling.Preserve
    },
    inputPath))
{
    image.Save("cmyk_image.preserve.tiff");
}

using (Image image = Image.Load(
    new DecoderOptions
    {
        ColorProfileHandling = ColorProfileHandling.Convert
    },
    inputPath))
{
    image.Save("cmyk_image.converted.tiff");
}

Open these files in the same color-managed image viewer:
◦ cmyk_image.tiff
◦ cmyk_image.preserve.tiff
◦ cmyk_image.converted.tiff

4.Compare both generated images with the original. Iv'e also add the images produce by the code

Expected result: Both generated images should visually match the original CMYK TIFF.

Actual result: Both generated images have noticeable color differences. The output created with Preserve differs the most from the original.

Images

cmyk_image.preserve.tiff
cmyk_image.preserve.tiff
cmyk_image.tiff
cmyk_image.tiff
cmyk_image.converted.tiff
cmyk_image.converted.tiff

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by running the provided DecoderOptions reproduction with cmyk_image.tiff and compare the three attached TIFFs in the same color-managed viewer. Trace ImageSharp's TIFF ICC profile handling for ColorProfileHandling.Preserve and Convert; done means the generated images visually match the original as expected.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
computer-graphics
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.