Изменение размера изображения с альфа-каналом

Я пишу код для создания изображений - по сути, у меня есть исходное изображение большого размера с прозрачными областями.

Я использую GDI +, чтобы открыть это изображение и добавить дополнительные объекты.

Что я хочу сделать дальше, так это сохранить это новое изображение намного меньшего размера, поэтому я использовал конструктор Bitmap, который принимает исходный объект Image, высоту и ширину, а затем сохранил их.

Я ожидал, что альфа-канал будет сглажен, как и цветовые каналы, но этого не произошло - в результате получилось несколько полупрозрачных пикселей, но в целом он очень блочный. Что дает?

Using img As New Bitmap("source100x100.png")
 ''// Drawing stuff
 Using simg As New Bitmap(img, 20, 20)
  simg.Save("target20x20.png")
 End Using
End Using

Изменить: я думаю, что я хочу SuperSampling, как то, что делает Paint.NET, когда установлено «Лучшее качество».


person Hafthor    schedule 10.03.2009    source источник


Ответы (1)


Нарисуйте изображение на новом растровом изображении вместо того, чтобы создавать новое растровое изображение из изображения.

Создайте пустое растровое изображение, просто указав размер, затем используйте метод Graphics.FromImage для создания объекта Graphics для растрового изображения. Используйте метод DrawImage, чтобы нарисовать изображение на новом растровом изображении.

В объекте Graphics есть такие свойства, как Interpolationmode и PixelOffsetMode, которые можно использовать для управления масштабированием и отрисовкой изображения.

person Guffa    schedule 10.03.2009
comment
SmoothingMode тоже очень помог. Спасибо. - person Hafthor; 10.03.2009