3

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();

私はそれで遊んで、いつも私が求めている間違った結果を得ます. 背景が透明になることがありますが、外側の領域の画像の一部に白い点があります。また、画像のサイズを実際よりも小さくします。サイズを変更すると問題が発生すると思います。

更新: これは、何らかの理由でサイズ変更が原因で発生します。サイズを変更しなくても機能します。そうは言っても、サイズを変更する必要があるので、それで作業する必要があります。

ありがとう。

4

2 に答える 2

0

白い背景画像に合成してみてください。

Image bg = new Image(testimage.Size, new ColorRGB(255, 255, 255));
testimage = bg.Composite(testimage, 0, 0);
于 2015-08-10T17:53:39.633 に答える