在不同的机器上裁剪时会影响jpeg的质量?

时间:2014-01-09 17:48:36

标签: c# image-resizing imageresizer

我正在使用第三方库(ImageResizing.net)裁剪图像,但在特定系统(2008服务器)上,它会以红色调出现。

下面的C#通过nuget使用ImageResizer.net 3.4.2。

    private static void ApplyCrop(string sourceDir)
    {
        var sourceImagePath = System.IO.Path.Combine(sourceDir, "before.jpg");
        var outputImagePath = System.IO.Path.Combine(sourceDir, "after.jpg");

        var cropSettings = new ResizeSettings();
        cropSettings.CropTopLeft = new System.Drawing.PointF(0,0);
        cropSettings.CropBottomRight = new System.Drawing.PointF(1003,990);
        cropSettings.Width = 1000;
        cropSettings.Height = 1200;
        cropSettings.Quality = 100;

        if (System.IO.File.Exists(outputImagePath))
            System.IO.File.Delete(outputImagePath);
        ImageBuilder.Current.Build(sourceImagePath, outputImagePath, cropSettings);
    }

我已将jpeg质量设置为100,应该是零压缩。您可以在tinted image

中看到差异

我真的不认为这是第三方库的问题,而是服务器上使用的图像编解码器。 我将如何确定正在使用的DLL,是否有任何建议使用,安全使用(没有垃圾邮件,广告软件等)编解码器?

1 个答案:

答案 0 :(得分:1)

它甚至可能不是编解码器 - 它可能只是机器使用的监视器显示配置文件。尝试将其设置回sRGB并查看它是否消失。

GDI +并不能让您对ICC配置文件有太多控制权 - 您唯一可用的设置是忽略图像中包含的ICC配置文件(ImageResizer中的ignoreicc = true) - 但如果显示配置文件导致问题,这可能无济于事。 / p>

此外,其他(非默认)管道都不应受到影响(freeimage,wic)。

更新 - 收到原始文件后

该图像是使用Adobe“美国网络涂层(SWOP)v2”颜色配置文件的仅限Photoshop的CMYK jpeg。 GDI +无法对此进行颜色调整,但是我们的FreeImage管道应该能够,如果您从http://freeimage.sourceforge.net/download.html下载最新的本机dll。当前与ImageResizer捆绑的那些使用速度优化来阻止准确的CMYK ICC配置文件转换。