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();
私はそれで遊んで、いつも私が求めている間違った結果を得ます. 背景が透明になることがありますが、外側の領域の画像の一部に白い点があります。また、画像のサイズを実際よりも小さくします。サイズを変更すると問題が発生すると思います。
更新: これは、何らかの理由でサイズ変更が原因で発生します。サイズを変更しなくても機能します。そうは言っても、サイズを変更する必要があるので、それで作業する必要があります。
ありがとう。