使用Alpha通道调整图像大小

时间:2009-03-10 18:07:12

标签: .net graphics image-processing gdi+ image-scaling

我正在编写一些代码来生成图像 - 基本上我有一个很大的源图像并包含透明区域。

我使用GDI +打开该图像并添加其他对象。

我接下来要做的是将这个新图像保存得更小,所以我使用了Bitmap构造函数,它接受了一个源Image对象以及一个高度和宽度,然后保存了它。

我期待alpha通道像颜色通道一样被平滑,但这没有发生 - 它确实导致了几个半透明像素,但总体来说它非常块状。是什么给了什么?

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 个答案:

答案 0 :(得分:2)

在新位图上绘制图像,而不是从图像中创建新的位图。

仅通过指定大小来创建空位图,然后使用Graphics.FromImage方法为位图创建Graphics对象。使用DrawImage方法将图像绘制到新位图上。

Interpolationmode对象中有PixelOffsetModeGraphics等属性,可用于控制图像的缩放和绘制方式。