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