Я использую 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
как в коде выше, точно так же, как код выше –
должен быть способ сгладить изображение, функцию такого типа. Без изменения размера он работает, и я получаю чистый белый цвет, потому что он прозрачен на 100% без цвета в этих конкретных прозрачных областях. –