Vb.net 从较大的图像中裁剪矩形
我正在使用我在另一个stackoverflow问题上找到的一个变体代码,在指定位置从一个较大的图像中裁剪出一个矩形。但每次它的作物得到正确的宽度和高度,但图像显示为黑色 *面是预定义的矩形对象Vb.net 从较大的图像中裁剪矩形,vb.net,gdi+,Vb.net,Gdi+,我正在使用我在另一个stackoverflow问题上找到的一个变体代码,在指定位置从一个较大的图像中裁剪出一个矩形。但每次它的作物得到正确的宽度和高度,但图像显示为黑色 *面是预定义的矩形对象 Dim OrignalImage = Image.FromFile("C:\fileName.jpg") Dim CropImage = New Bitmap(face.Width, face.Height) Using grp = Graphics.F
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
创建它
另外,您不需要调用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
看起来您正在创建具有所需大小的
CropImage
对象,但从未告诉DrawImage()
将图像应用于该对象。因此,当您保存CropImage
时,它只是一个空白。您使用的DrawImage
可能也不正确,但如果没有更多信息,我无法判断。你想干什么?您有一个大图像(fileName.jpg)和该图像(face)中的一个矩形,并且您正试图创建一个包含源图像指定部分的新裁剪图像(newfile.jpg)?如果这是您想要的,请尝试我编辑的代码。谢谢!最后一个问题,如果我想稍微扩大矩形的面积,我会在哪里进行调整?到面.width
和面.height
?在面周围放置填充物?是的,听起来很合理。实际上我刚刚试过,它只是添加了空白,也许我需要将它添加到face对象中,因为它用于grp.drawimage
?