带有CMYK的新位图图像

“重复”问题说明如何将RGB更改为CMYK以获取单个值。 我需要更改一个Image对象,并且不能逐个像素地对其进行转换,因为您需要一个Bitmap对象。 如果我将Image对象更改为Bitmap它已经被转换,但质量很差。

我一直使用相同的调整大小方法的JPG图像的年龄,但今天我注意到,一些图像质量非常差。

        var newImage = new Bitmap(width, height);
        using (Graphics gr = Graphics.FromImage(newImage))
        {
            gr.SmoothingMode = SmoothingMode.HighQuality;
            gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
            gr.PixelOffsetMode = PixelOffsetMode.HighQuality;
            gr.DrawImage(image, new Rectangle(0, 0, width, height));
        }

        //return image;
        return newImage;

请记住,我现在没有调整任何内容。 如果我return image的质量是像原来的,如果我return newImage颜色非常无趣。

当您在Photoshop中打开“坏”图像时,图像具有CMYK模式。 如果我在Photoshop中将其更改为RGB并再次尝试,颜色保持不变。

我可以检测C#CMYK ,但我不知道如何改变newImage对象以保持颜色正确。

我试图将newImage的调色板设置为image的调色板,但是这会引发invalid parameter异常。 我也尝试直接从原始位图创建位new Bitmap(image, new Size(width, height)); 但这并没有改变任何东西。

我也尝试用Graphics gr = Graphics.FromImage(image)直接从原始图像加载Graphics gr ,但是这会引发Out of memory异常。

示例图像比原始图像小,但仍然可以看到质量差异。

CMYKRGB

如何在c#中将CMYK更改为RGB而没有质量损失?

链接地址: http://www.djcxy.com/p/50293.html

上一篇: new Bitmap image with CMYK

下一篇: .NET test for bitonal TIFF image without trapping exception?