Изменение размера изображения с альфа-каналом - PullRequest
1 голос
/ 10 марта 2009

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

Я использую 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 делает, когда установлено «Лучшее качество»

1 Ответ

2 голосов
/ 10 марта 2009

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

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

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

...