C# 在不同的机器上剪切时,什么会影响jpeg的质量?

C# 在不同的机器上剪切时,什么会影响jpeg的质量?,c#,image-resizing,imageresizer,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 output

我正在使用第三方库(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,这应该是零压缩。你可以从中看出不同之处


我真的不认为第三方库有问题,但服务器上使用的图像编解码器有问题我如何确定正在使用的DLL以及是否有任何推荐的、安全使用的(无垃圾邮件、广告软件等)编解码器?

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

GDI+不能让您对ICC配置文件进行太多的控制-您唯一可用的设置是忽略图像中包含的ICC配置文件(ImageResizer中的ignoreicc=true)-但如果您的显示配置文件导致问题,这可能没有帮助

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

更新-收到原始文件后
该图像是一张仅使用Photoshop的CMYK jpeg图像,使用Adobe“U.S.Web Coating(SWOP)v2”颜色配置文件。GDI+无法进行颜色调整,但如果您从当前与ImageResizer捆绑的DLL下载最新的本机DLL,则我们的FreeImage管道应该能够进行颜色调整。使用速度优化可以排除准确的CMYK ICC配置文件转换。

因此,如果我将其转换为使用WIC或FreeImage,那么它将绕过可能的GDI+问题。是的,但它们使用不同的调整大小算法。WIC的有点差(但快得多)。FreeImage的质量相同或更好,但速度要慢得多。修复配置文件问题可能更好。