我正在使用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