我正在使用第三方库(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,是否有任何建议使用,安全使用(没有垃圾邮件,广告软件等)编解码器?
答案 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配置文件转换。