Diese Klasse dient der Serialisierung.
Sie kann alle Bilder in einem Verzeichnis laden (AddDir).
Public Class PicList
Dim _PicSeries As PicSeries
''' <param name="Quality">Qualitätsstufe JPEG-Encoder (50-95)</param>
Public Sub New(Optional ByVal Quality As Integer = 85)
_PicSeries = New PicSeries(Quality)
End Sub
''' <summary>Bilder JPEG-kopmprimiert in den Speicher laden</summary>
''' <param name="PicDirectory">Verzeichnis mit Bilddateien</param>
''' <param name="PicSize">Größe der Bilder im Speicher</param>
''' <param name="PicExtensions">optional: Bilddatei-Erweiterung(en)</param>
Public Function AddDir(ByVal PicDirectory As String, ByVal PicSize As Size,
ByVal ParamArray PicExtensions() As String) As Integer
If Not Directory.Exists(PicDirectory) Then Return -1
If PicSize.Width < 5 Or PicSize.Height < 5 Then Return -1
If PicExtensions.Length < 1 Then
PicExtensions = ".jpg,.jpeg,.jpe,.bmp,.tif,.tiff,.gif,.png".Split( _
","c)
End If
Dim picextlist As New List(Of String)
picextlist.AddRange(PicExtensions)
For i As Integer = 0 To picextlist.Count - 1
picextlist(i) = picextlist(i).ToUpper
Next i
Dim addedpics As Integer = 0
For Each File As String In Directory.GetFiles(PicDirectory)
If picextlist.Contains(Path.GetExtension(File).ToUpper) Then
If _PicSeries.Add(File, PicSize) >= 0 Then addedpics += 1
End If
Next File
Return addedpics
End Function
''' <summary>Bilddatei JPEG-komprimiert an Liste anhängen</summary>
''' <param name="file">zu ladende Bilddatei</param>
''' <param name="Picsize">Größe des Bildes</param>
Public Function Add(ByVal File As String, ByVal PicSize As Size) As Integer
Return _PicSeries.Add(File, PicSize)
End Function
''' <summary>Anzahl der geladenen Bilder</summary>
Public ReadOnly Property Count() As Integer
Get
Return _PicSeries.piclist.Count
End Get
End Property
''' <summary>Bildstream aus der Liste entfernen</summary>
''' <param name="index">Index des Bildes</param>
Public Sub RemoveAt(ByVal index As Integer)
_PicSeries.RemoveAt(index)
End Sub
''' <summary>Abfrage eines Bildes </summary>
''' <param name="Index">Bildindex (nullbasiert)</param>
Default Public ReadOnly Property GetBitmap(ByVal Index As Integer) As Bitmap
Get
Return New Bitmap(_PicSeries.piclist(Index))
End Get
End Property
''' <summary>Pad/Name der geladenen Bilddatei</summary>
''' <param name="index">BildIndex (nullbasiert)</param>
Public ReadOnly Property Bildpfad(ByVal index As Integer) As String
Get
Return _PicSeries.picpath(index)
End Get
End Property
''' <summary>Speichern der Bilderliste</summary>
''' <param name="File">Datei</param>
''' <returns>Alles OK?</returns>
Public Function Save(ByVal File As String) As Boolean
Try
Using fs As New FileStream(File, _
FileMode.OpenOrCreate, FileAccess.Write, FileShare.None)
Dim bf As New _
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
bf.Serialize(fs, _PicSeries)
End Using
Return True
Catch ex As System.Exception
Return False
End Try
End Function
''' <summary>Laden der Bilderliste</summary>
''' <param name="File">Datei</param>
''' <returns>Alles OK?</returns>
Public Function FromFile(ByVal File As String) As Boolean
Try
Using fs As New FileStream(File, _
FileMode.Open, FileAccess.Read, FileShare.Read)
Dim bf As New _
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
_PicSeries.Dispose()
_PicSeries = CType(bf.Deserialize(fs), PicSeries)
End Using
_PicSeries.InitEncoder()
Return True
Catch ex As System.Exception
Return False
End Try
End Function
Public Sub Dispose()
_PicSeries.Dispose()
End Sub
End Class |