使用 VB.NET 实现图像裁剪和调整大小






4.56/5 (41投票s)
使用 VB.NET 实现简单的图像裁剪和调整大小
引言
本文讨论了使用 VB.NET 实现简单图像裁剪和调整大小的技术,供开发人员参考。
背景
我曾经对图像裁剪感到好奇。我了解到,与目前可用的其他裁剪技术相比,有很多简单的图像裁剪技术。
Using the Code
本文讨论了使用 VB.NET 实现简单的图像裁剪。
在本文中,我将讨论如何使用常见的事件(如鼠标移动、鼠标按下、鼠标释放和按钮单击事件)进行简单的图像裁剪。
我只想讨论使用五个步骤进行图像裁剪。您只需要遵循这些步骤即可。
步骤如下:
- 加载图像
- 裁剪图像
- 捕获图像
- 调整图像大小(如果需要)
- 保存图像
在开始创建之前,我们需要 2 个PictureBox 控件(PreviewPictureBox
、crobPictureBox
),3 个按钮(save
、Cancel
、open
),1 个TrackBar(resizingTrackBar
)和一些标签。嘿,这看起来像烹饪规范。
步骤简述如下:
1. 加载图像
可以使用文件打开对话框将图像加载到PictureBox 中,并通过位图显示方法显示,即:
openDlg.ShowDialog()
PreviewPictureBox.Image = System.Drawing.Bitmap.FromFile(openDlg.FileName)
crobPictureBox.Image = System.Drawing.Bitmap.FromFile(openDlg.FileName)
'*********PreviewPictureBox and crobPictureBox are
'the cropping and previewing pictureboxes
这可以在窗体加载或按钮单击事件中完成。
2. 裁剪图像
可以使用鼠标移动和鼠标按下事件从PictureBox 中裁剪图像。可以通过使用上述事件获取 x 和 y 轴来实现,即:
cropX = e.X
cropY = e.Y
cropPen = New Pen(cropPenColor, cropPenSize)
cropPen.DashStyle = DashStyle.DashDotDot
'*************You have to create Colors(cropPenColor)
'and Size(cropPenSize) to draw the doted lines
您可以使用 DashStyle.DashDotDot
查看我应用的样式来指定选定的区域。还可以使用 crobPictureBox.CreateGraphics.DrawRectangle(cropPen, cropX, cropY, cropWidth, cropHeight)
。
3. 捕获图像
仅使用鼠标释放事件捕获图像,并将裁剪后的图像设置为 Bitmap
类,该类创建一个图像并将创建的图像设置为预览,即:
Dim bit As Bitmap = New Bitmap(crobPictureBox.Image, _
crobPictureBox.Width, crobPictureBox.Height)
g.DrawImage(bit, 0, 0, rect, GraphicsUnit.Pixel)
PreviewPictureBox.Image = cropBitmap
4. 调整图像大小
如果想调整图像大小,可以使用TrackBar 来调整图像大小。我建议使用高质量的图像进行调整大小,这样可以得到高质量的裁剪和调整大小后的图像。
scale_factor = Integer.Parse(resizingTrackBar.Value)
img1.Image = cropBitmap
bm_source = New
Bitmap(img1.Image) bm_dest = New Bitmap( _
CInt(bm_source.Width * scale_factor), _
Int(bm_source.Height * scale_factor))
Dim gr_dest As Graphics = Graphics.FromImage(bm_dest)
gr_dest.DrawImage(bm_source, 0, 0, bm_dest.Width + i, bm_dest.Height + i)
PreviewPictureBox.Image = bm_dest
'*************Image resizing is done by means of getting the values from trackbar
5. 保存图像
裁剪后的图像质量可能较低,导致图像失真。我尽力使图像具有良好的质量。我使用了 SmoothingMode
、CompositingQuality
、InterpolationMode
和 EncoderParameter(myEncoder, 60L)
属性来制作图像。
关注点
在上述步骤和编码方法中,您会发现简单性。这就是我的意思。所有编码人员都应该以**优化方式使用简单的技术**来解决复杂的问题。
历史
- 2008 年 6 月 17 日:初始发布