我正在使用MagickNet在我的ASP.NET C#项目中进行图像处理。我的问题是,我上传了一张带有透明度的PNG图像,当我将其转换为JPEG格式时,我得到一个带有白色斑点的黑色背景,而不是透明部分的白色背景。MagickNet PNG透明度到JPEG
Stream su = upload.FileContent;
MagickNet.Image testimage = new MagickNet.Image(su);
testimage.Filter = FilterType.LanczosFilter;
testimage.Compression = CompressionType.JPEGCompression;
testimage.QuantizeDither = false;
testimage.BackgroundColor = new Color(System.Drawing.Color.White);
testimage.Resize(new System.Drawing.Size(Convert.ToInt32(testimage.Size.Width * 0.4), Convert.ToInt32(testimage.Size.Height * 0.4)));
testimage.Write(System.Web.HttpContext.Current.Server.MapPath(".") + "\\temp\\" + DateTime.Now.Hour + "-" +DateTime.Now.Minute + "-" + DateTime.Now.Second + ".jpg");
su.Close();
su.Dispose();
testimage.Dispose();
Magick.Term();
我玩了它,总是得到错误的结果,我后。有时我会得到一个透明的背景,但在外部区域的图像的一些部分有白色的点。我还调整图像的尺寸以使其小于原来的尺寸。我认为重新调整它会导致问题。
更新:这是由于某种原因调整大小而导致的。不调整它的作品。说了这么多,我需要调整大小,所以我需要它来处理它。
谢谢。
您是否在转换为jpg或之后调整大小。另外jpg是有损的,所以当png透明的时候你永远不会得到纯白的。 – Karlth 2013-03-07 10:53:31
就像上面的代码一样,就像 – 2013-03-07 11:12:56
以上的代码必须是一种扁平化图像的方式,这是一种功能。如果没有调整大小,它会起作用,而且我确实得到纯白色,因为它在这些特定透明区域中没有颜色是100%透明 – 2013-03-07 11:13:26