Для моего текущего приложения WPF мне нужно уменьшить масштаб System.Drawing.Image
(объекты, которые я загружаю из файлов PNG (некоторые из них с прозрачным фоном). Я пробовал несколько подходы к изменению размеров изображений, и все они отлично работали с точки зрения меньшего изображения после этого, но, к сожалению, все они делают изображения свободными от их прозрачности.Потеря прозрачности в System.Drawing.Image при использовании ImageResizer для изменения размера
Моя последняя попытка состояла в том, чтобы использовать ImageResizer внешнюю библиотеку, чтобы получить работа выполнена так, как я ожидал, что она легко справится с этой проблемой, но у меня все еще есть одна и та же проблема: Исходное изображение отображается с прозрачным фоном; Отображенное изображение отображается с черным фоном.
Вот мой код для использования библиотеки ImageResizer:
ImageResizer.Instructions inst = new ImageResizer.Instructions("width=" + newWidth.ToString() + ";height=" + newHeight.ToString() + ";format=png;mode=max");
ImageResizer.ImageJob job = new ImageResizer.ImageJob(originalImage, typeof(System.Drawing.Bitmap), inst);
job.Build();
return job.Result as System.Drawing.Image;
Это мои другие два подхода, которые также в основном обеспечивают тот же результат (изображение изменяется: еще; Прозрачность сохраняется: неа):
return originalImage.GetThumbnailImage(newWidth, newHeight, null, IntPtr.Zero); // Transparency gets lost
return new System.Drawing.Bitmap(originalImage, new System.Drawing.Size(newWidth, newHeight)); // Transparency gets lost
Любые идеи о том, что я должен делать, чтобы сохранить прозрачность при изменении размера?
С уважением
Ralf
Хотя вопрос был направлен на использование 'System.Drawing.Image', я думаю, что это по-прежнему правильный ответ: просто используя класс« BitmapImage », который, кажется, более подходит для WPF, решил мою проблему с помощью потерял прозрачность. Кроме того, я заметил, что BitmapImage имеет два полезных свойства, называемых DecodePixelWidth и DecodePixelHeight, которые делают изменение размера еще более простым для моего случая. – Ralf