从asp.net中的多个图像中合成一个图像并裁剪它们

时间:2015-11-05 10:51:09

标签: asp.net vb.net image drawimage

我正在制作一个用于从多个图像中合成图像的系统。让我们说我有两张图片,我想写一个像这样的图像:

enter image description here

粗边框定义了我想要的完整图像。它是一个分辨率为600X540的div,里面有两个div,每个div包含一个我可以根据需要定位的不同图像。在定位结束时,我得到每个图像的左边框和上边框(对应于整个div)。

我在后面的代码中创建图像时遇到了问题。我正在使用Bitmap.DrawImage方法。这是我的代码:

 oImgOut = New System.Drawing.Bitmap(600, 540)

 oGraph = System.Drawing.Graphics.FromImage(oImgOut)
 oGraph.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
 oGraph.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality
 oGraph.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality
 oGraph.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality
 oGraph.FillRectangle(Drawing.Brushes.White, 0, 0, 600, 540)

 //image 1
 oGraph.DrawImage(oImg1, CInt(left1), CInt(top1), CInt(width1), CInt(height1))
 oImg1.Dispose()

 //image2
 oGraph.DrawImage(oImg2, CInt(left2), CInt(top2), CInt(width2), CInt(height2))
 oImg2.Dispose()

 oImgOut.Save(strDirectory)
 oImgOut.Dispose()

这是我到目前为止所得到的:

enter image description here

我试图给每张图片的宽度为300像素,高度为540像素,但正如您所看到的那样,右侧的图像看起来很难看:

enter image description here

我想知道是否有办法裁剪图像?我查看了大多数DrawImage原型,但我找不到任何可以完成我想要的工作。当然,你会比我更清楚。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

我找到了使用DrawImage功能裁剪图像的解决方案

 oGraph.DrawImage(oImg2, CInt(left2), CInt(top2), _
                            New Rectangle(0, 0, _
                                          If(CInt(width2) > 600, 600, CInt(width2)), _
                                          If(CInt(height2) > 270, 270, CInt(height2)) + CInt(top2) _
                                           ), GraphicsUnit.Pixel)

但我不明白它是如何工作的,请大家,我需要你的帮助:(。