新浪博客

VB.NET生成制定图片的缩略图函数

2024-03-14 08:44阅读:
注意头部导入Imports System.IO
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'[导入照片按钮]*.jpg;*.jpeg;*.png;*.bmp;*.gif
OpenFileDialog1.Title = '请选择一张照片'
OpenFileDialog1.Multiselect = False
OpenFileDialog1.Filter = '照片文件(*.png;*.jpg;*.jpeg;*.gif;*.bmp)|*.png;*.jpg;*.jpeg;*.gif;*.bmp|所有文件 (*.*)|*.*'
If OpenFileDialog1.ShowDialog = DialogResult.OK Then
' 用户点击了“打开”按钮,加载图像文件到PictureBox1控件
PicBox_ZP1.ImageLocation = OpenFileDialog1.FileName
Dim Directory As String = OpenFileDialog1.InitialDirectory
MsgBox(Path.GetDirectoryName(OpenFileDialog1.FileName) & '\s.' & Path.GetFileName(OpenFileDialog1.FileN
ame) & Path.GetExtension(OpenFileDialog1.FileName))
my_Class.GenerateThumbnail(OpenFileDialog1.FileName, Path.GetDirectoryName(OpenFileDialog1.FileName) & '\s.' & Path.GetFileName(OpenFileDialog1.FileName), 100, 150)
End If
End Sub
-------------------------
' 用于生成缩略图
' 调用GenerateThumbnail函数生成缩略图
' GenerateThumbnail('path_to_your_original_image.jpg', 'path_to_save_thumbnail.jpg', thumbnailWidth, thumbnailHeight)
Public Shared Function GenerateThumbnail(ByVal originalImagePath As String, ByVal thumbnailPath As String, ByVal thumbnailWidth As Integer, ByVal thumbnailHeight As Integer)
' 检查参数是否有效
If Not File.Exists(originalImagePath) Then
Throw New FileNotFoundException('原始图片文件未找到。', originalImagePath)
End If
' 加载原始图片
Using originalImage As Image = Image.FromFile(originalImagePath)
' 计算缩略图的缩放比例
Dim scaleWidth As Double = Convert.ToDouble(thumbnailWidth) / originalImage.Width
Dim scaleHeight As Double = Convert.ToDouble(thumbnailHeight) / originalImage.Height
' 选择较小的缩放比例,以确保缩略图不会失真
Dim scale As Double = Math.Min(scaleWidth, scaleHeight)
' 计算缩略图的实际尺寸
Dim newWidth As Integer = Convert.ToInt32(originalImage.Width * scale)
Dim newHeight As Integer = Convert.ToInt32(originalImage.Height * scale)
' 创建一个新的Bitmap对象,用于保存缩略图
Using thumbnail As New Bitmap(newWidth, newHeight)
' 创建一个Graphics对象,用于绘制缩略图
Using graphics As Graphics = Graphics.FromImage(thumbnail)
' 设置高质量插值法,以提高图片质量
graphics.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
' 在缩略图上绘制原始图片的缩小版
graphics.DrawImage(originalImage, 0, 0, newWidth, newHeight)
End Using
' 保存缩略图到文件
thumbnail.Save(thumbnailPath, ImageFormat.Jpeg)
End Using
End Using
Console.WriteLine('缩略图已生成并保存到:' & thumbnailPath)
End Function

我的更多文章

下载客户端阅读体验更佳

APP专享