我有3张图片。
它们都是80x60张照片
红色和蓝色圆圈出现在该区域内的不同位置。
我正在尝试通过首先加载背景,然后加载红色圆圈,最后加载蓝色圆圈来生成合成图像。
然而,在资源管理器中,生成的Results.png图像显示为完全黑色,并且在Windows照片查看器中打开时,它看起来完全透明。
Dim Background = Image.FromFile("GreenBackground.png", True)
Dim RedCircle = Image.FromFile("RedCircle.png", True)
Dim BlueCircle = Image.FromFile("BlueCircle.png", True)
Dim Canvas = Graphics.FromImage(Background)
Canvas.DrawImage(RedCircle, New Point(0, 0))
Canvas.DrawImage(BlueCircle, New Point(0, 0))
Dim Result As New Bitmap(Background.Width, Background.Height, Canvas)
Result.Save("Result.png", System.Drawing.Imaging.ImageFormat.Png)
任何想法我可能做错了什么?
答案 0 :(得分:1)
您使用的Bitmap构造函数仅使用传递的图形对象的DPI:
Graphics对象,指定新Bitmap的分辨率。 MSDN Ref
所以基本上你现在正在创建一个新的空位图。您的图形对象设置为修改背景图像,因此您需要做的只是:
Background.Save("Result.png", System.Drawing.Imaging.ImageFormat.Png)
在修改结束时。
LinqPad示例:
Sub Main
Dim image = System.Drawing.Image.FromFile("y.png", true)
Dim overlay = System.Drawing.Image.FromFile("x.png", true)
Dim g = System.Drawing.Graphics.FromImage(image)
g.DrawImage(overlay, new System.Drawing.Point(0,0))
image.Save("result.png", System.Drawing.Imaging.ImageFormat.Png)
End Sub