How to set profile using Magick.net in the same wa

2020-03-26 07:25发布

问题:

I convert image based on CMYK to image based on RGB in the following way using ImageMagick(command Line) :

convert.exe -profile icc:JapanColor2001Coated.icc -colorspace cmyk input.jpg -profile icc:sRGB.icc -colorspace sRGB output.jpg 

And I challenge to convert image based on CMYK to image based on RGB in the following way using Magick.net

I show my sorce code below :

private MagickImage convertCMYKToRGB(MagickImage image)
        {
            image.AddProfile(new ColorProfile(@"C:\sRGB.icc"));
            image.ColorSpace = ColorSpace.sRGB;
            return image;
        }

but converted image using Image Magick(command line) is different from converted image using Magick.net

Maybe, I need to add ColorProfile to image based on CMYK not only to image based on RGB. but, I don't know how to add ColorProfile to input image(image based on CMYK)

How to set profile using Magick.net in the same way using Image Magick ?

回答1:

You should first add the old profile and then the new profile:

using (MagickImage image = new MagickImage("input.jpg"))
{
  // Tell ImageMagick what we're starting with
  image.AddProfile(new ColorProfile(@"C:\Path\JapanColor2001Coated.icc"));

  // Tell it to convert - the details are handled for you by the library
  image.AddProfile(ColorProfile.SRGB);

  // You're done. Save it.
  image.Write("output.jpg");
}

Another example here: https://magick.codeplex.com/wikipage?title=Convert%20image

Notice in the linked example they're converting from a standard CMYK, which means you don't need to load a custom icc profile - the standard CMYK is already in Magick.net, as ColorProfile.USWebCoatedSWOP.

If you need more help feel free to start a discussion here: https://magick.codeplex.com/discussions. If you post a message there please include a link to your source image.