Hier eine Funktion, die alle
JPEGs in einem Ordner lädt, sie in eine vorgegebene Thumbnail-Größe
einpasst und ein Array zurückgibt.
Diese Funktion könnte "asynchron" in einem Backgroundworker
ausgeführt werden.
''' <summary>JPEGs im Ordner als Thumbnails laden</summary>
''' <param name="PicPath">Ordner mit JPEG-Dateien</param>
''' <param name="width">Thumbnails: maximale Breite (10-400 Pixel)</param>
''' <param name="height">Thumbnails: maximale Höhe (10-400 Pixel</param>
''' <returns>Bitmap-Array mit Thumbnails (oder NOTHING)</returns>
Public Function GetPics(ByVal PicPath As String, _
Optional ByVal width As Integer = 300, _
Optional ByVal height As Integer = 300) As Bitmap()
'Parameter prüfen
If PicPath Is Nothing Then Return Nothing
If Not IO.Directory.Exists(PicPath) Then Return Nothing
If width < 10 Or width > 400 Then Return Nothing
If height < 10 Or height > 400 Then Return Nothing
Try
'Bilderliste für Rückgabe
Dim pics As New List(Of Bitmap)
'JPEG-Dateien im Ordner ermitteln und bearbeiten
For Each file As String In My.Computer.FileSystem.GetFiles _
(PicPath, FileIO.SearchOption.SearchTopLevelOnly, "*.jpg", _
"*.jpeg")
Using bmp_loaded As New Bitmap(file) 'Bild-Datei laden
With bmp_loaded
'Thumbnail-Größe ermitteln
Dim twidth As Integer = width
Dim theight As Integer = CInt(.Height * width / .Width)
If theight > height Then
theight = height
twidth = CInt(.Width * height / .Height)
End If
'Thumbnail erstellen
Using thumbnail As New Bitmap(twidth, theight),
gr As Graphics = Graphics.FromImage(thumbnail)
gr.DrawImage(bmp_loaded, 0, 0, twidth, theight)
'Thumbnail-Kopie in der Liste anhängen
pics.Add(CType(thumbnail.Clone, Bitmap))
End Using 'Thumbnail freigeben
End With
End Using 'bmp_loaded freigeben
Next file 'JPEG-File
'Thumbnails als Array zurückgeben
Return pics.ToArray
Catch
'Fehler beim Laden des Bildes
Return Nothing
End Try
End Function Anwendung:
Dim thumbnails() As Bitmap = GetPics("C:\Pictures", 300, 300) Die Rückgabe zunächst auf Nothing abfragen
(falls Fehler aufgetreten sind).
Beitrag wurde zuletzt am 05.01.13 um 12:31:26 editiert. |