从较大的图像中裁剪出一个矩形
Posted
技术标签:
【中文标题】从较大的图像中裁剪出一个矩形【英文标题】:Cropping a rectangle out of a larger image 【发布时间】:2013-05-28 16:45:28 【问题描述】:我正在使用我在另一个 *** 问题中找到的代码变体,从指定位置的较大图像中裁剪出一个矩形。但每次裁剪时,它都会获得正确的宽度和高度,但图像显示为黑色。
How to crop an image in vb.net?
*face 是一个预定义的矩形对象。
Dim OrignalImage = Image.FromFile("C:\fileName.jpg")
Dim CropImage = New Bitmap(face.Width, face.Height)
Using grp = Graphics.FromImage(OrignalImage)
grp.DrawImage(OrignalImage, OrignalImage.Width, OrignalImage.Height, face, GraphicsUnit.Pixel)
OrignalImage.Dispose()
CropImage.Save("C:\newfile.jpg")
grp.Dispose()
End Using
【问题讨论】:
看起来您正在创建具有所需大小的CropImage
对象,但从未告诉您的 DrawImage()
将图像应用到它。因此,当您保存 CropImage
时,它只是空白。
【参考方案1】:
您正在从OriginalImage
创建您的Graphics
对象。您需要从您的 CropImage
创建它。
此外,您无需调用 grp.Dispose()
,因为 Using
块会为您完成此操作。
更正的代码:
Using OrignalImage = Image.FromFile("C:\fileName.jpg")
Using CropImage = New Bitmap(face.Width, face.Height)
Using grp = Graphics.FromImage(CropImage)
grp.DrawImage(
OrignalImage, 0, 0,
face, GraphicsUnit.Pixel)
End Using
CropImage.Save("C:\newfile.jpg")
End Using
End Using
【讨论】:
您对DrawImage
的使用也可能不正确,但如果没有更多信息,我无法判断。你想做什么?您有一个大图像 (fileName.jpg) 和该图像中的一个矩形 (face),并且您正在尝试创建一个包含源图像指定部分的新裁剪图像 (newfile.jpg)?如果这是你想要的,试试我编辑的代码。
谢谢!最后一个问题,如果我想稍微扩大矩形的面积,我会在哪里进行调整?给face.width
和face.height
?
要在脸部周围放置填充物?是的,这听起来很合理。
我实际上只是尝试过,它只是添加了空白,也许我需要将它添加到面部对象,因为它在grp.drawimage
中使用?以上是关于从较大的图像中裁剪出一个矩形的主要内容,如果未能解决你的问题,请参考以下文章
从图像中裁剪 System.Windows.Shapes 矩形