Хорошо, позвольте мне сначала указать пару моментов о вашем коде:
- PictureBox здесь не имеет никакого смысла.Вы не должны создавать PictureBox для использования Image.
- Всегда не забывайте располагать объект
Image
(например, оборачивая его в блок Using
), чтобы избежать проблем с памятью. - В отличие от C #, VB.NET не требует экранирования символа
\
, поэтому вы можете написать свой путь так: «C: \ Users ...».
Теперь, для изменения размера изображения, вы можете просто создать экземпляр класса Bitmap
с конструктором, который принимает изображение и аргумент размера: Bitmap(Image, Size)
или Bitmap(Image, Int32, Int32)
.
Здесь:
Dim sourcePath As String = "C:\Users\Charbel\Desktop\Images"
Dim outputPath As String = "C:\Users\Charbel\Desktop\Images\Resized"
IO.Directory.CreateDirectory(outputPath)
Dim dir = New IO.DirectoryInfo(sourcePath)
Dim files As IO.FileInfo() = dir.GetFiles("*.jpg", IO.SearchOption.AllDirectories)
For Each fInfo In files
Using img As Bitmap = Image.FromFile(fInfo.FullName)
Using resizedImg As New Bitmap(img, 500, 374)
resizedImg.Save(IO.Path.Combine(outputPath, fInfo.Name),
Imaging.ImageFormat.Jpeg)
End Using
End Using
Next