我在ASP.NET C#项目中使用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();


我玩过它,总是得到错误的结果。有时我得到透明的背景,但是图像的某些部分在外部区域带有白点。我还将图像调整为小于实际尺寸。我认为调整大小会导致问题。

更新:这是由于某种原因调整大小引起的。无需调整大小即可。话虽如此,我需要调整大小,因此需要它来配合使用。

谢谢。

最佳答案

尝试合成到白色背景图像上。

Image bg = new Image(testimage.Size, new ColorRGB(255, 255, 255));
testimage = bg.Composite(testimage, 0, 0);

关于c# - 具有JPEG透明性的MagickNet PNG,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15267576/

10-17 02:48